您的位置:首页 > 其它

hdu 1541 Stars (树状数组)

2013-09-09 17:18 447 查看
差不多算是最裸的树状数组了吧。

对于每一颗星星,只要查询在此之前这个点左下方一共有多少个点就行了。题目把坐标顺序都排好了,真是不要太贴心。

#include<stdio.h>
#include<string.h>
#define N 32005
int a
,mark
;
int lowbit(int x)
{
return x&(-x);
}
void Update(int x)
{
while(x<N)
{
a[x]++;
x+=lowbit(x);
}
return ;
}
int Find(int x)
{
int sum=0;
while(x>0)
{
sum+=a[x];
x-=lowbit(x);
}
return sum;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
memset(mark,0,sizeof(mark));
int i;
for(i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
x++;y++;
int k;
k=Find(x);mark[k]++;
Update(x);
}
for(i=0;i<n;i++)
printf("%d\n",mark[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: