题目大意:
解决:树状数组,关键是要将x轴的下标从一开始可以将x都加1
#include <iostream>
#include <cstdio>
using namespace std;
const int N=32005;
int n;
int c[N];
int lev[N];
int lowbit(int x)
{
return x&(-x);
}
void updata(int pos,int inc)
{
for(int i=pos;i<N;i+=lowbit(i))
c[i]+=inc;
}
int getsum(int pos)
{
int sum=0;
for(int i=pos;i;i-=lowbit(i))
sum+=c[i];
return sum;
}
int main()
{
int i, a,b;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&a,&b);
lev[getsum(a+1)]++;
updata(a+1,1);
}
for(i=0;i<n;i++)
printf("%d\n",lev[i]);
system("pause");
return 0;
}
浙公网安备 33010602011771号