1536:【例 2】数星星 Stars

【题目描述】
天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k 级的。

例如,上图中星星 5 是 3 级的(1,2,4 在它左下),星星 2,4 是 1 级的。例图中有 1 个 0 级,2 个 1 级,1 个 2 级,1 个 3 级的星星。

给定星星的位置,输出各级星星的数目。

一句话题意:给定 n 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。

【输入】
第一行一个整数 N,表示星星的数目;

接下来 N 行给出每颗星星的坐标,坐标用两个整数 x,y表示;

不会有星星重叠。星星按 y 坐标增序给出,y 坐标相同的按 x 坐标增序给出。

【输出】
N 行,每行一个整数,分别是 0 级,1 级,2 级,……,N−1 级的星星的数目。

【输入样例】

5
1 1
5 1
7 1
3 3
5 5

【输出样例】

1
2
1
1
0

【提示】
数据范围与提示:
对于全部数据,1≤N≤1.5×104,0≤x,y≤3.2×104

思路:
这是树状数组的例题。
因为本题数据的y是按升序输入的。y相同按x的升序输入,所以我们没必要管y。
题目大意就是说,在输入一颗星星时要求出有多少颗(在它之前输入的)星星的x坐标比它小。这不就是树状数组的区间求和操作吗?而星星数据的输入不是一次数据更新操作吗?那这道题就是树状数组的两个基本操作。

注意一点:x>=0,所以x有等于零的情况,那就将所有的x+1就行了,否则会RE(死循环)。因为c[0]是做不了更新操作的。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=4e4+10;
int n,c[N],x,y,f[N];
int lowbit(int x) {return x&-x;}
void update(int x) {while(x<=N) c[x]++,x+=lowbit(x);}
int sum(int x)
{int ans=0;while(x) ans+=c[x],x-=lowbit(x);return ans;
}
int main()
{//fre();scanf("%d",&n);for(int i=1;i<=n;i++) {scanf("%d%d",&x,&y);f[sum(++x)]++,update(x);  }for(int i=0;i<n;i++) printf("%d\n",f[i]);return 0;
}

1536:【例 2】数星星 Stars相关推荐

  1. 【POJ No. 2352】数星星 Stars

    [POJ No. 2352]数星星 Stars 北大OJ 题目地址 [题意] 星星由平面上的点表示,星星的等级为纵横坐标均不超过自己的星星数量(不包括自己).下图中, 5号星的等级为3(纵横坐标均不超 ...

  2. [树状数组]数星星 Stars

    数 星 星 S t a r s 数星星 Stars 数星星Stars 题目描述 天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标.如果一个星星的左下方(包含正左和正下)有 k k k 颗星星 ...

  3. 数星星 Stars 题解

    题目链接 分析 一道树状数组,但坑点比较多... 首先在草稿纸上画图可以得知:星星的等级与 x x x无关,至于 y y y的大小有关,于是我们可以根据输入顺序一一将其插入树状数组进行维护,此星星的等 ...

  4. URAL 1028 数星星 题解

    URAL 1028 数星星 题解 URAL 1028 题目 Astronomers often examine star maps where stars are represented by poi ...

  5. 用ClickHouse在GitHub上数星星

    在最大的基友交友网站GitHub上,来自世界各地的开源开发者们进行着数百万个项目.这里每天都有大量的代码文档.修复和提交BUG之类的事件信息产生. 而GitHub Archive项目,正是搜集了这些G ...

  6. 2021年12月电子学会图形化三级编程题解析含答案:数星星

    [此题目来自2021年12月份电子学会] [青少年软件编程(图形化)等级考试试卷(三级)] 三.编程题(共3题,共30分) 36:数星星 Goblin有个很厉害的魔法:他一挥手就可以点亮夜空中五彩斑斓 ...

  7. 混合个人训练第四十六场(A,B题解) A 数论线代全家桶 (all) B: 看星星 (stars)

    A 数论线代全家桶 (all) 题意如图. 思路: 首先发现 1 = 1 * 1 * 1; n=1; 4 = 1 * 4 * 1; n=2; 72 = 4 * 18=4 * 9 * 2; n=3; 2 ...

  8. 2022年9月青少年软件编程(图形化)等级考试试卷--三级--数星星

    数星星 Goblin有个很厉害的魔法:他一挥手就可以点亮夜空中五彩斑斓的星星灯. 1.准备工作 (1)删除小猫角色,添加"Goblin"角色,并删除Goblin角色的造型" ...

  9. c语言数星星结构体,1469: 数星星(结构体专题)

    题目描述 一天,小明坐在院子里数星星,Gardon就出了个难题给她:Gardon在天空画出了一个矩形区域,让他输入矩形区域里有多少颗星星,仁慈的上帝还为他标出了每个星星的坐标.但小明数着数着就看花了眼 ...

最新文章

  1. LB负载均衡集群 - NAT
  2. iphone全部机型_iPhone12卖爆 产业链喜迎5G时代 股价天花板打开?|iphone|iphone12|运营商|智能机...
  3. 正则中需要转义的特殊字符小结
  4. 51nod 1277 KMP 前缀出现次数
  5. socket编程学习笔记
  6. uva 10539——Almost Prime Numbers
  7. @font-face 使用过程
  8. C#利用Microsoft.Office.Interop.Excel导出数据到Excel
  9. mongodb 持久化 mysql_最详细的python爬虫指南(四):持久化操作(mongoDB、mysql)...
  10. cocos2d-x 3.1 编译脚本android-build.py
  11. jQuery 之 niceScroll
  12. ict中的it和ct_ICT.Social – IT专业人员的社交网络
  13. 艾宾浩斯30天计划表_干货丨艾宾浩斯遗忘曲线
  14. 路由器关闭DHCP之后连接不到路由器设置界面?
  15. 设计模式 装饰者模式 带你重回传奇世界
  16. 英国留学生论文introduction部分怎么写比较好?
  17. js 时间格式化转换
  18. unity 调用 海康 网络摄像头 免费下载
  19. Three.js学习七——播放模型动画时模型沿着轨迹移动
  20. 网易2016笔试(3)

热门文章

  1. itextpdf 表格跨行跨列与可视化图表
  2. 如何在 Linux 服务器上更改分区方案?
  3. 今天汉强打了个电话过来;
  4. docker 安装 redis6.0.8
  5. pytorch gpu版本的最全安装教程,含环境配置、CUDA(百度云下载)安装程序失败解决方案
  6. 贷后管理的″看″、″防″、″守″
  7. 计算机老师的专业发展怎么写,计算机教师发展趋势
  8. matlab只能运行两次,[求助]先后两次运行,一次报错一次不报错是为何?
  9. TagSupport doStartTag doEndTag
  10. java openoffice_使用java调用openoffice服务进行pdf转换