poj 2352

题目大意:

解决:树状数组,关键是要将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;
}

posted on 2011-08-21 11:36  猿类的进化史  阅读(434)  评论(0编辑  收藏  举报