您的位置:首页 > 其它

PKU 2352 Stars 求比较小的数字个数

2013-01-11 21:37 411 查看
题目意思就是求每个星星左下方的星星的个数,由于y轴已经排序好了,我们可以直接用按x轴建立一维树状数组,然后求相当于它前面比它小的个数,模板直接一套就搞定了~~

#include <iostream>
using namespace std;

const int MAX = 32000 + 10;
int c[MAX], level[MAX];

int Lowbit(int x)
{
return x & (-x);
}
void Update(int x)
{
while( x < MAX )
{
c[x]++;
x += Lowbit(x);
}
}
int Getsum(int x)
{
int sum = 0;
while( x > 0 )
{
sum += c[x];
x -= Lowbit(x);
}
return sum;
}

int main()
{
int n;
while(~scanf("%d", &n))
{
memset(c,0, sizeof(c));
memset(level, 0, sizeof(level));
int x, y;
for(int i = 1; i <= n; i++)
{
scanf("%d%d", &x, &y);
x++;//否则x等于的时候会陷入死循环
level[Getsum(x)]++;
Update(x);
}

for(int i = 0; i < n; i++)
printf("%d\n", level[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: