标签:main return include amp update print 树状数组 += int
看到图和坐标就想到了用二维数组来写 但是连数组的开不下 写好了也爆内存
没看到题目是按照y坐标升序给的坐标
这样就可以忽略y坐标 进行一维的树状数组
#include<bits/stdc++.h> using namespace std; #define N 32050 int c[N]; int ans[N]; int lowbit(int i) { return i&-i; } void update(int x,int v) { for(int i=x;i<N;i+=lowbit(i)) c[i]+=v; return ; } int sum(int x) { int ans=0; for(int i=x;i>0;i-=lowbit(i)) ans+=c[i]; return ans; } int main() { int k; while(scanf("%d",&k)==1) { memset(c,0,sizeof(c)); memset(ans,0,sizeof(ans)); for(int i=1;i<=k;i++) { int a,b; scanf("%d%d",&a,&b); a++; ans[ sum(a) ]++; update(a,1); } for(int i=0;i<k;i++) printf("%d\n",ans[i]); } }
标签:main return include amp update print 树状数组 += int
原文地址:https://www.cnblogs.com/bxd123/p/10357395.html