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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • checkbox实现单选

    checkbox实现单选checkbox实现单选信用等级量化分级管理(级别)ABCD$(function(){$(’[name=“XYDJLHFJ”][type=“checkbox”]’).each(function(){KaTeXparseerror:Expecte…

    2022年5月30日
    132
  • git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    2021年5月12日
    112
  • rsync远程同步文件_通过ssh传输文件

    rsync远程同步文件_通过ssh传输文件对于需要远程同步文件来说,我们常见的方式有scp或者rsync,但是想定时任务去同步的话,往往都需要设置免密登录,为安全起见,线上服务器没必要设置这个,且添加新的机器又要去设置免密,着实比较麻烦。采用rsync客户服务端的话,只需要设置一个密码即可。这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,…

    2022年10月13日
    0
  • CDMA向量内积的计算[通俗易懂]

    CDMA向量内积的计算[通俗易懂]CDMA向量内积的计算在平面坐标上,有A点和B点,A点坐标是(x1,y1),B点坐标是(x2,y2)。![图1](https://img-blog.csdnimg.cn/20200303134826109.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNz…

    2022年9月25日
    0
  • java mysql 分页_mysql分页查询总结

    java mysql 分页_mysql分页查询总结mysql分页查询总结mysql提供分页的功能:SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffsetLIMIT子句可以被用于强制SELECT语句返回指定的记录数。LIMIT接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行…

    2022年6月24日
    30
  • golang学习资料[Basic]

    golang学习资料[Basic]golang学习资料[Basic]

    2022年4月22日
    43

发表回复

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

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