zoukankan      html  css  js  c++  java
  • 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
    ",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);
        }
    }
  • 相关阅读:
    服务管理器
    自动启动管理器
    进程管理器
    进程模块查看器
    无DLL远程注入
    远程DLL注入
    U盘免疫
    WSAAsyncSelect Demo
    select Demo
    校正系统时间
  • 原文地址:https://www.cnblogs.com/mltang/p/8979661.html
Copyright © 2011-2022 走看看