摘要:这是一道裸的二维线段树区间查询最大最小值+点修改,学习啦!二维线段树其实就是在一维线段树的每一个节点上增加一个一维线段树具体从x节点传到y节点还要看是区间还是节点,大部分操作都和一维线段树差不多 1 #include 2 #include 3 #include 4 using namespa...
阅读全文
摘要:或许,是我理解错了。完全可以把大白书上的maintain当成pushup。其实只要完全理解了,什么姿势都能把线段树打出来。话题回到这道题目,开一个maxv二维数组,记录等级为i的人在该区间最大经验,然后用线段树(levelup)进行升级。 1 #include 2 #include 3 #inclu...
阅读全文
摘要:本题的线段树区间更新不能用区间更新做,因为不满足:区间和的更新==区间内每个数更新的和所以实际上是单点更新,单点更新不是退化成On2了吗?不,因为要知道一点64位整数开平方七八次就变成1了,退化成1的区间我们不去更新他,正确计算复杂度为O(10*m*log(n));类似开方这些变化很快的,think...
阅读全文
摘要:很久以前就看到过这个题目,当时刚学线段树看了题解还是感觉敲不出来。现在重新做这道题目感觉思路很难想到,代码量也不小,加深了对lrj大白书中pushdown和maintain的理解。预处理从1开始到i的值。然后一个一个更改,求和。具体细节,包括如何找到更改的左端点和右端点,这些需要仔细思考。think...
阅读全文
摘要:第一个二分查找的是第num个0,第二个二分查找的是最后一个0把lrj大白书里的线段树重打一遍成以后模板,关于里面的maintain函数: 1 #include 2 #include 3 #include 4 using namespace std; 5 int n,ll; 6 int setv[20...
阅读全文
摘要:裸==1.从x更新到y-12.注意格式 1 #include 2 #include 3 #include 4 using namespace std; 5 #define n 1000000 6 int ans[100005],maxv[4000005],addv[4000005]; 7 void ...
阅读全文
摘要:求一个点的下属中能力比自己高,且在所有下属中忠诚度最高的点。dfs扫出左端点右端点,然后按照能力从大到小,id从小到大排序。然后简单的线段树单点修改(忠诚值),区间查询最大(忠诚值)。 1 #include 2 #include 3 #include 4 #include 5 using names...
阅读全文
摘要:和codeforces上次那个题目差不多吧,都是用线段树求和加速dp为了下次好找,把几个stl放标题哈哈哈 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MOD 9901 6 int sumv[400005],a[...
阅读全文
摘要:过几天再看看别人怎么做的。。我是根据以前做的一道题目想到的思路,将某点变为2条线,该点是第一条线下面,线值为1,另一点在右边那条线下面,值为-1然后区间修改求最大值。。 1 #include 2 #include 3 #include 4 using namespace std; 5 int tmp...
阅读全文
摘要:1 #include 2 #include 3 int a[1000005],minv[1000005],num[1000005],gcdv[1000005]; 4 int gcd(int x,int y) 5 { 6 if (y==0) return x; 7 return gc...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 long long a[1000005],b[1000005],pre[100005],maxv[1000005],from[100000...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 mapmp; 8 pairegd[120005]; 9 int y1,y2,time_,now; 10 int next...
阅读全文
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 struct dian 6 { 7 int x,y; 8 }s[200005]; 9 int leftnum[500005],rightnum[500005...
阅读全文
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 struct LINE 6 { 7 double x,ydown,yup; 8 int flag; 9 bool operator=1)32 ...
阅读全文
摘要:1 #include 2 #include 3 int ql,qr,p; 4 long long fsum,v; 5 int f[100005],g[100005],a[100005],b[100005]; 6 int r[100005],l[100005],hash[100005],...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int p,v,ql,qr,fsum,sumv[10005],d[10005],a[10005]; 7 void update(int o,int l,int ...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int ql,qr,x,n,ll[150005],rl[150005],a[150005]; 7 stacks; 8 void build(in...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int yy2,yy1,v,fsum; 8 int sumv[1000005],setv[1000005]; 9 10 void main...
阅读全文
摘要:1 #include 2 #include 3 int addv[100005],minv[100005],fmin,y1,y2,v,l[20005],d[20005],len[20005]; 4 int min(int x,int y) 5 { 6 if (x=r) addv[o]+=v...
阅读全文
摘要:1 #include 2 int ql,qr,p,v,minv[1000005]; 3 int max(int x,int y) 4 { 5 if (x>y) return(x); 6 return(y); 7 } 8 int qu...
阅读全文