标签:res void 注意 find lowbit 树状数组 div mes ++
二位偏序
/* CDQ之二位偏序 树状数组 注意x能取到0 总体+1 */ #include<cstdio> #include<cstring> using namespace std; const int N=32050; int res,n,x,num[N],s[N]; int lowbit(int x) {return x&-x;} void add(int x) {while(x<=32000) s[x]++,x+=lowbit(x);} int find(int x) {res=0;while(x) res+=s[x],x-=lowbit(x);return res;} int main() { while(scanf("%d",&n)!=EOF) { memset(s,0,sizeof(s)),memset(num,0,sizeof(num)); for(int i=0;i<n;i++) scanf("%d%*d",&x),x++,num[find(x)]++,add(x); for(int i=0;i<n;i++) printf("%d\n",num[i]); } return 0; }
标签:res void 注意 find lowbit 树状数组 div mes ++
原文地址:https://www.cnblogs.com/lxy8584099/p/10331459.html