平衡树
例题1:[bzoj3224]&[luogu3369]普通平衡树(平衡树模板题) 题意: 维护一个集合,支持:1.加入x;2.删除x;3.查询x排名;4.查询排名x的数;5.查询x前驱;6.查询x后继 0.3查询(有多少个数小于x)+1,4查询存在x个数小于等于它的最小数,5查询排名为(x排名-1)的数,6查询排名为((x+1)排名)的数 1.可以开一棵权值线段树/trie树(动态开点)来维护,维护区间和即可,比较简单 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mid (0LL+l+r>>1) 4 #define N 10000005 5 int V,n,r,p,x,f[N],ls[N],rs[N]; 6 void update(int &k,int l,int r,int x,int y){ 7 if (!k)k=++V; 8 if (l==r){ 9 f[k]+=y; 10 return; 11 } 12 if (x<=mid)update(ls[k],l,mid,x,y); 13 else update(rs[k],mid+1,r,x,y); 14 f[k]=f[ls[k]]+f[rs[k]]; 15 } 16 int query1(int k,int l,int r,int x,int