hdu 1556 A

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int n;
int c[maxn];
int lowbit(int x)   { return x&(-x);  }
void update(int num,int val)
{
    while(num)
    {
        c[num]+=val;
        num-=lowbit(num);
    }
}
int getsum(int num)
{
    int sum=0;
    while(num<=n)
    {
        sum+=c[num];
        num+=lowbit(num);
    }
    return sum;
}
int32_t main()
{
    while(1)
    {
        cin>>n;
        if(n==0) break;
        memset(c,0,sizeof(c));
        for(int i=1;i<=n;i++)
        {
            int a,b; cin>>a>>b;
            update(b,1);
            update(a-1,-1);
        }
        for(int i=1;i<=n;i++)
        {
            cout<<getsum(i);
            if(i!=n) cout<<" ";
        }cout<<endl;
    }
}
hdu 1556 树状数组
原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/9487491.html