随笔分类 -  线段树

摘要:#include using namespace std; const int maxn = (1e5+10)*20; int tn,root[maxn],sum[maxn],lson[maxn],rson[maxn]; int x,y; void update(int i ,int j,int l,int &r) { r = ++tn; if(i==j){ ... 阅读全文
posted @ 2018-10-15 19:03 TTTCoder 阅读(300) 评论(0) 推荐(0)
摘要:您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x 阅读全文
posted @ 2018-10-15 15:49 TTTCoder 阅读(316) 评论(0) 推荐(0)
摘要:线段树构造 因为树状数组不需要构造这一过程,所以先讲线段树的构造 就是用到递归:先设left=1,right=n,然后每一次递归,left、mid和mid+1、right。代码如下: `` 线段树单点修改 单点修改就是每到一个节点,看这个节点代表着的区间包括不包括这个点,包括就加上。 树状数组单点修 阅读全文
posted @ 2018-07-21 10:25 TTTCoder 阅读(1185) 评论(0) 推荐(2)
摘要:1 struct node 2 { 3 int l,r,sum,add,setv,minn,maxn; 4 }tree[1>1; 15 build(id= l && tree[id].r >1; 30 if(l = l && tree[id].r >1; 46 if(l = l && tree[id].r >1; 62 if(l =... 阅读全文
posted @ 2017-07-24 09:58 TTTCoder 阅读(290) 评论(0) 推荐(0)