题目描述

夜空中有N颗恒星(N≤100000),每颗恒星具有其坐标(x, y)(0≤x, y≤100000)。现在,天文学家要对这些恒星进行分类,分类的标准如下:对于任意一颗恒星S(x,y),如果存在k颗恒星,其x, y坐标均不大于S,则恒星S属于k类星。
如下图所示:第5颗恒星为3类星,这是由1、2、4三颗恒星均在其左下方而得出的,类似地第2、4两颗恒星为1类星,第3颗恒星为2类星。因此在这幅图中只有一颗0类星,共有二颗1类星,2类星和3类星各有一颗。
现给出N颗恒星的坐标,要求统计出0~N-1类星的个数。


输入格式

输入文件第一行包含一个整数N,表示恒星总数。
接下来的N行每行两个整数表示一颗恒星的坐标。不存在两颗星拥有相同的坐标。


输出格式

输出文件包含N行,每行包含一个整数,第i行表示第i-1类星的数量。


样例数据

样例输入

5
3 3
5 1
5 5
1 1
7 1

样例输出

1
2
1
1
0


数据范围

对于20%的数据,n<=1000;
对于100%的数据, n<=100000;


题目分析

要统计左下方的点数
二维不好统计,先按照x从小到大排序,因此就只用统计下方的点数了。
可以使用树状数组轻松解决。
树状数组维护y坐标,插入后查询比他小的求和即可


源代码

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
map<int,int>M,M2;
map<int,int>::iterator it;
int n,m,f[500005],ans[500005];
struct node {int x,y;
} a[500005];
const int Get_Int() {int n=0,bj=1;char x=getchar();while(x<'0'||x>'9'){if(x=='-')bj=-1;x=getchar();}while(x>='0'&&x<='9'){n=n*10+x-'0';x=getchar();}return n*bj;
}
int Lowbit(int x) {return x&-x;
}
void Add(int x,int d) {for(int i=x; i<=m; i+=Lowbit(i))f[i]+=d;
}
int Ask(int r) {int sum=0;for(int i=r; i>=1; i-=Lowbit(i))sum+=f[i];return sum;
}
bool cmp(node x,node y) {if(x.x==y.x)return x.y<=y.y;return x.x<y.x;
}
int main() {n=Get_Int();for(int i=1; i<=n; i++) {a[i].x=Get_Int()+1;a[i].y=Get_Int()+1;m=max(m,a[i].y);}sort(a+1,a+n+1,cmp);for(int i=1; i<=n; i++) {ans[Ask(a[i].y)]++;Add(a[i].y,1);}for(int i=0; i<n; i++)printf("%d\n",ans[i]);return 0;
}

[POJ2352] Stars 夜空星辰 - 树状数组相关推荐

  1. hduoj Stars 二维树状数组

    话说这道题是一道不折不扣的二维树状数组的水题,可是对于我这种菜鸟中的vip来说,却还是纠结了很久很久..留下做个模板吧..... 题目: Yifenfei is a romantic guy and ...

  2. hdu- 2642 Stars 二维树状数组

    注意树状数组下标 #include<stdio.h> #include<string.h> #include<iostream> #include<algor ...

  3. 树状数组 讲解和题目集

    树状数组 树状数组作为一种实现简单.应用较广的高级数据结构,在OI界的地位越来越重要,下面我来简单介绍一下树状数组和它的简单应用. 一.树状数组简介 树状数组:顾名思义,是一种数组,其中包含了树的思想 ...

  4. poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★

    poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...

  5. poj2352(树状数组)

    题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...

  6. POJ 2481 Cows POJ 2352 Stars(树状数组妙用)

    题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...

  7. HDU5126 stars(4维偏序->cdq套cdq+树状数组)

    stars 题目大意: 在一个三维空间当中,每次进行一个操作,添加一个点或者统计空间中的某一个长方体范围内的所有点 三维空间中我们用两个点即可确定一个长方体. 首先效仿平面二维数点的方法,根据容斥原理 ...

  8. (二维树状数组)E - Stars

    E - Stars 题意:B表示点亮改点,D表示熄灭,Q查询区间内亮的个数 Sample Input 5 B 581 145 B 581 145 Q 0 600 0 200 D 581 145 Q 0 ...

  9. 树状数组的进阶运用(Stars 数星星)

    英文原题 Problem Description Astronomers often examine star maps where stars are represented by points o ...

最新文章

  1. 数据量大了一定要分表,分库分表 Sharding-JDBC 入门与项目实战
  2. abstractset java_AbstractSet源码分析-java8
  3. html中input不可编辑状态,css如何实现input不可编辑
  4. linux自动挂载windows磁盘
  5. php简单论坛登录注册,php简单登录注册验证
  6. (篇五)C语言水仙花数的花样求法
  7. python websocket django vue_Django资料 Vue实现网页前端实时反馈输出信息
  8. Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
  9. C++中convertTo对应的python代码
  10. 电脑分屏工具 v1.22
  11. 联通鸿蒙卡怎么样,联通不限流量卡,联通无限流量,正规资费
  12. css如何将彩色图片变为黑白图片
  13. xxx is not a function
  14. 手机模拟器或手机设置代理服务器,以及手动设置的代理ip无法保存的问题解决
  15. 无尽长廊(Gallery)
  16. 微信小程序文件目录介绍
  17. iphone计算机如何打字速度,打字速度太慢了?教你几招快速提高iPhone打字速度
  18. 强烈质疑第二届Android应用开发中国大学生挑战赛
  19. 对于UPX脱壳的解决
  20. 【STM32F407VET6开发】第三章 jpeg编解码实验(有误,待修改)

热门文章

  1. 我用 python 做了款可开淘宝店赚钱的工具
  2. Java.lang.Class类 isArray()方法有什么功能呢?
  3. 有关chromium浏览器 ios 读证书 验证证书 (注没有找到方法),在这里做一下笔记
  4. 源码级剖析了 Naive UI 的 Button 完整过程
  5. 压力换算公斤单位换算_压力单位转换器_压力换算器 百分百好站
  6. 海门开发区机器人项目_点赞!海门“经洽会”现场签约10亿元以上项目21个
  7. 软件测试面试题:你们公司的测试流程是怎么样的?
  8. kermit开发板启动Linux乱码,Ubuntu下C-kermit的使用
  9. SpringSecurity之CSRF漏洞保护
  10. Unified Functional Testing(UFT)15.0.2入门保姆级教程(二),图文详解。QTP