• 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;

    }

  • 相关阅读:
    [洛谷P1484] 种树
    Codeforces Round #505 Div. 1 + Div. 2
    [NOIp2015] 斗地主
    ☆ [NOIp2016] 天天爱跑步 「树上差分」
    [NOI2010] 超级钢琴
    [POI2000] 病毒
    [SCOI2010] 股票交易
    [NOI2002] 贪吃的九头龙
    [ZJOI2008] 骑士
    LeetCode 笔记系列 18 Maximal Rectangle [学以致用]
  • 原文地址:https://www.cnblogs.com/yejinru/p/2477297.html
Copyright © 2020-2023  润新知