zoukankan      html  css  js  c++  java
  • ural 1028. Stars 树状数组

    /*

    题目:

        星星有等级,每颗星星的等级划分为在它下方(坐标轴上)有多少颗星星即为多少等级

    分析:

        由于先输入的是x坐标,而y坐标已经是按照由小到大输入的,所以可以用树状数组来求和的形式

        来求出该行星的等级。

    */

    #include <iostream>

    #include <cstdio>

    #include <cstring>

    using namespace std;

    #define X 40005

    int c[X],ans[X],n;

    int lowbit(int x){

        return x & -x;

    }

    void modify(int x){

        while(x<X){

            c[x]++;

            x += lowbit(x);

        }

    }

    int sum(int x){

        int cnt = 0;

        while(x>0){

            cnt += c[x];

            x -= lowbit(x);

        }

        return cnt;

    }

    int main(){

        freopen("sum.in","r",stdin);

        freopen("sum.out","w",stdout);

        int x,y;

        cin>>n;

        memset(c,0,sizeof(c));

        memset(ans,0,sizeof(ans));

        for(int i=0;i<n;i++){

            scanf("%d%d",&x,&y);

            x++;

            modify(x);

            ans[sum(x)-1]++;

        }

        for(int i=0;i<n;i++)

            printf("%d\n",ans[i]);

        return 0;

    }

  • 相关阅读:
    UVA 11021繁衍模型+概率计算
    LA 5059博弈+SG函数
    LA 3942 字典树
    Beat---hdu2614
    Wooden Sticks---hdu1051(最长上升子序列)
    欧拉函数基础
    1370
    钱币兑换问题---hdu1284(完全背包)
    Drainage Ditches--hdu1532(网络流 模板)
    Fibonacci--poj3070(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/yejinru/p/2477297.html
Copyright © 2011-2022 走看看