[POJ2352] Stars 夜空星辰 - 树状数组
题目描述
夜空中有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 夜空星辰 - 树状数组相关推荐
- hduoj Stars 二维树状数组
话说这道题是一道不折不扣的二维树状数组的水题,可是对于我这种菜鸟中的vip来说,却还是纠结了很久很久..留下做个模板吧..... 题目: Yifenfei is a romantic guy and ...
- hdu- 2642 Stars 二维树状数组
注意树状数组下标 #include<stdio.h> #include<string.h> #include<iostream> #include<algor ...
- 树状数组 讲解和题目集
树状数组 树状数组作为一种实现简单.应用较广的高级数据结构,在OI界的地位越来越重要,下面我来简单介绍一下树状数组和它的简单应用. 一.树状数组简介 树状数组:顾名思义,是一种数组,其中包含了树的思想 ...
- poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...
- poj2352(树状数组)
题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...
- POJ 2481 Cows POJ 2352 Stars(树状数组妙用)
题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...
- HDU5126 stars(4维偏序->cdq套cdq+树状数组)
stars 题目大意: 在一个三维空间当中,每次进行一个操作,添加一个点或者统计空间中的某一个长方体范围内的所有点 三维空间中我们用两个点即可确定一个长方体. 首先效仿平面二维数点的方法,根据容斥原理 ...
- (二维树状数组)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 ...
- 树状数组的进阶运用(Stars 数星星)
英文原题 Problem Description Astronomers often examine star maps where stars are represented by points o ...
最新文章
- 数据量大了一定要分表,分库分表 Sharding-JDBC 入门与项目实战
- abstractset java_AbstractSet源码分析-java8
- html中input不可编辑状态,css如何实现input不可编辑
- linux自动挂载windows磁盘
- php简单论坛登录注册,php简单登录注册验证
- (篇五)C语言水仙花数的花样求法
- python websocket django vue_Django资料 Vue实现网页前端实时反馈输出信息
- Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
- C++中convertTo对应的python代码
- 电脑分屏工具 v1.22
- 联通鸿蒙卡怎么样,联通不限流量卡,联通无限流量,正规资费
- css如何将彩色图片变为黑白图片
- xxx is not a function
- 手机模拟器或手机设置代理服务器,以及手动设置的代理ip无法保存的问题解决
- 无尽长廊(Gallery)
- 微信小程序文件目录介绍
- iphone计算机如何打字速度,打字速度太慢了?教你几招快速提高iPhone打字速度
- 强烈质疑第二届Android应用开发中国大学生挑战赛
- 对于UPX脱壳的解决
- 【STM32F407VET6开发】第三章 jpeg编解码实验(有误,待修改)
热门文章
- 我用 python 做了款可开淘宝店赚钱的工具
- Java.lang.Class类 isArray()方法有什么功能呢?
- 有关chromium浏览器 ios 读证书 验证证书 (注没有找到方法),在这里做一下笔记
- 源码级剖析了 Naive UI 的 Button 完整过程
- 压力换算公斤单位换算_压力单位转换器_压力换算器 百分百好站
- 海门开发区机器人项目_点赞!海门“经洽会”现场签约10亿元以上项目21个
- 软件测试面试题:你们公司的测试流程是怎么样的?
- kermit开发板启动Linux乱码,Ubuntu下C-kermit的使用
- SpringSecurity之CSRF漏洞保护
- Unified Functional Testing(UFT)15.0.2入门保姆级教程(二),图文详解。QTP