HDU 1541 Stars (树状数组)

HDU 1541 Stars (树状数组)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Problem Description
Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and not to the right of the given star. Astronomers want to know the distribution of the levels of the stars.

HDU 1541 Stars (树状数组)

For example, look at the map shown on the figure above. Level of the star number 5 is equal to 3 (it’s formed by three stars with a numbers 1, 2 and 4). And the levels of the stars numbered by 2 and 4 are 1. At this map there are only one star of the level 0, two stars of the level 1, one star of the level 2, and one star of the level 3.

You are to write a program that will count the amounts of the stars of each level on a given map.

 

Input
The first line of the input file contains a number of stars N (1<=N<=15000). The following N lines describe coordinates of stars (two integers X and Y per line separated by a space, 0<=X,Y<=32000). There can be only one star at one point of the plane. Stars are listed in ascending order of Y coordinate. Stars with equal Y coordinates are listed in ascending order of X coordinate.
 

Output
The output should contain N lines, one number per line. The first line contains amount of stars of the level 0, the second does amount of stars of the level 1 and so on, the last line contains amount of stars of the level N-1.
 

Sample Input
   
   
5 1 1 5 1 7 1 3 3 5 5

 

Sample Output
   
   
1 2 1 1 0

 

直接统计不大于当前数的个数,然后hash记录。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <set>
#include <stack>
#include <cctype>
#include <algorithm>
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
using namespace std;
typedef long long LL;
const int mod = 99999997;
const int MAX = 0x3f3f3f3f;
const int maxn = 15050;
const int N = 32005;
int n, a, b;
int c[N], ans[maxn];
int main()
{
    while(~scanf("%d", &n)) {
        memset(c, 0, sizeof(c));
        memset(ans, 0, sizeof(ans));
        int k = 0;
        for(int i = 1; i <= n; i++) {
            scanf("%d%d", &a, &b); a++;
            int sum = 0;
            for(int j = a; j > 0; j -= j&(-j)) sum += c[j];
            for(int j = a; j <= N; j += j&(-j)) c[j]++;
            ans[sum]++;
        }
        for(int i = 0; i < n; i++) printf("%d\n", ans[i]);
    }
    return 0;
}



版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117088.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 15个你可能不知道的开源云平台

    15个你可能不知道的开源云平台1.1云服务环境Eucalyptus1.1.1介绍ElasticUtilityComputingArchitectureforLinkingYourProgramsToUsef

    2022年7月2日
    18
  • 浏览器报错400系列总结「建议收藏」

    浏览器报错400系列总结「建议收藏」 

    2022年5月18日
    50
  • 目前什么挖矿软件比较好用?[通俗易懂]

    目前什么挖矿软件比较好用?[通俗易懂]比特币最近又开始了牛气哄哄的上涨势头,对于想要挖矿赚钱的人来说是一个大好时机目前挖矿对于普通人来说还是存在一定门槛的,别的不说,关于钱包地址的设置,挖矿软件的调试等等,网上搜索出来的挖矿软件教程分分钟都能让你放弃,因此,找到一个好的挖矿软件工具,能让你事半功倍,心旷神怡。那么问题来了,简单好用的挖矿软件有哪些呢?我尝试过10多个挖矿软件,长沙矿工这些老挖矿软件就不说了适合矿场老板,不过…

    2022年10月15日
    4
  • 数据库ER图基础概念整理

    数据库ER图基础概念整理什么是ER图?ER图即是实体关系图!ER图分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。ER图中关联关系有三种:1对1(1:1):1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。1对多(1:N):1对多关系是指实体集A与实体集B中至

    2022年6月21日
    25
  • delphi字符函数Copy,Pos,Quotedstr

    delphi字符函数Copy,Pos,Quotedstr———————————————————————————————-Posfunction  Returnstheindexvalueofthefirstcharacterinaspecifiedsubstringthatoccursin

    2022年10月17日
    4
  • SHFileOperation删除文件夹

    SHFileOperation删除文件夹UsesShellapi;varFileOp:TSHFileOpStruct;beginwithFileOpdobeginWnd:=Handle;//hinstance;wFunc:=FO_DELETE;//FO_COPY,FO_RENAME,FO_MOVE,FO_DELETEpFrom:=Pchar(‘D…

    2022年7月18日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号