#include<cstdio>
using namespace std;
/*树状数组复杂度较低,而且代码量较少,除了适用范围较窄,其他方面都让人感觉非常舒服。*/
const int Kmax=1e6+20;
int num[Kmax];
int res[Kmax];
int n;
inline int lowbit(int x){
return x&-x;//取反+1
}
int getsum(int x){
int ans=0;
while (x) {
ans+=num[x];
x-=lowbit(x);
}
return ans;
}
void change(int x){
while (x<Kmax) {
num[x]++;
// printf(" num:%d:%d\n",x,num[x]);
x+=lowbit(x);
}
}
int main(){
scanf("%d",&n);
int x,y;
for(int i=0;i<n;i++){
scanf("%d%d",&x,&y);
++res[getsum(x+1)];
change(x+1);
// printf("\n");
}
for(int i=0;i<n;i++){
printf("%d\n",res[i]);
}
return 0;
}
树状数组之模板
最新推荐文章于 2023-12-10 22:39:41 发布