POJ-2352-Stars

来源:互联网 发布:河南虫虫网络 编辑:程序博客网 时间:2024/06/05 19:43

这个题要求统计星星的个数,按x的输入进行树状数组更新即可,注意x坐标可能为0的情况,所以对所有x坐标执行加1操作

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=45001;int n,cnt[maxn],t[maxn];int lowbit(int x){    return x&(-x);}int sum(int x){    int ans=0;    while(x>0)    {ans+=t[x];x-=lowbit(x);    }    return ans;}void update(int x){    while(x<maxn)    {t[x]++;x+=lowbit(x);    }}int main(){    while(scanf("%d",&n)!=EOF)    {memset(cnt,0,sizeof(cnt));memset(t,0,sizeof(t));for(int i=0;i<n;i++){    int ita,itb;    scanf("%d%d",&ita,&itb);    ita++;    cnt[sum(ita)]++;    update(ita);}for(int i=0;i<n;i++)    printf("%d\n",cnt[i]);    }    return 0;}


原创粉丝点击