hdu 1541

Posted mltang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1541相关的知识,希望对你有一定的参考价值。

因为y的输入是从小到大,所以不用考虑y坐标的问题

只考虑x坐标就行

还有个小细节就是0<=x,y,<=32000  x和y取0的时候树状数组处理不到 

x++就行了

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int maxn = 32005;
int a[maxn];
int c[maxn];
int getsum(int i);
void add(int i,int k);
int main()
{
    int n,j,i,k,x,y;
    while(scanf("%d",&n) != EOF)
    {
        memset(c, 0, sizeof(c));
        memset(a, 0, sizeof(a));
        for(i=0;i<n;++i)
        {
            scanf("%d%d",&x,&y);
            x ++;
            a[getsum(x)]++;
            add(x,1);
        }
        for(i=0;i<n;++i)
            printf("%d\n",a[i]);
    }
}
int lowbit(int k)
{
    return k&(-k);
}
int getsum(int i)
{
    int sum = 0;
    while(i > 0)
    {
        sum += c[i];
        i-=lowbit(i);
    }
    return sum;
}
void add(int i,int k)
{
    while(i <= 32000)
    {
        c[i]+=k;
        i+=lowbit(i);
    }
}

 

以上是关于hdu 1541的主要内容,如果未能解决你的问题,请参考以下文章

hdu1541--Stars(树状数组)

hdu 1541 (cdq分治)

题解报告:hdu 1541 Stars(BIT)

HDU1541 Stars(树状数组)

模板HDU 1541 树状数组

hdu 1541