【权值线段树】
一道简单模板题; 也记记吧,免得脑子不灵光又忘记了。 洛谷 1168 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+5; int n; int a[N],b[N]; struct Tree { int l,r,mid; int num; }tree[N<<2]; int read() { char c=getchar();int num=0; for(;!isdigit(c);c=getchar()); for(;isdigit(c);c=getchar()) num=num*10+c-'0'; return num; } void build(int root,int l,int r) { tree[root].l=l,tree[root].r=r,tree[root].mid=l+r>>1; if(l==r) return; build(root<<1,l,tree[root].mid); build(root<<1|1,tree[root].mid+1,r); } void update(int root,int x) { ++tree[root].num; if