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;

    }

  • 相关阅读:
    Flutter—代码提示不区分大小写
    Flutter—语法解析
    在Android Studio中创建flutter工程
    iOS热重载
    在终端中创建flutter程序
    Flutter的安装以及一些坑
    iTerms的配置和安装
    QT QFileSystemWatcher 文件监控 [转载]
    QT SQL 操作SQLite数据库
    QT使用QtCharts绘制图形
  • 原文地址:https://www.cnblogs.com/yejinru/p/2477297.html
Copyright © 2011-2022 走看看