数星星(树状数组模板题)

简介: 数星星(树状数组模板题)

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


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


7532b929e2f6552462eb109af9902338.png


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


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


输入格式


第一行一个整数 N,表示星星的数目;

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

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


输出格式

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


样例

Input Output
1. 5
2. 1 1
3. 5 1
4. 7 1
5. 3 3
6. 5 5
1. 1
2. 2
3. 1
4. 1
5. 0


有事你就q我;QQ2917366383


学习算法


我们可以知道这个可以暴力但是可能会超限,所以我们用树状数组;下面是ac代码,重点处都备注好了。

#include<cstdio>
const int maxn=1e6+7;//大家不要用暴力解法,有时候会卡数据 
int c[maxn], b[maxn];   
int n, x, y;
int Lowbit(int x){
  return x&(-x);
}
void update(int x, int y){
  for(int i = x; i <= 32001; i+=Lowbit(i))// 将x位置的树状数组都加1 
    c[i] += y;
}
int sum(int x){
  int sumn=0;
  for(int i = x; i > 0; i-=Lowbit(i))//累加星星 
    sumn += c[i];
  return sumn;
}
int main(){
  scanf("%d", &n); 
  for(int i = 1; i <= n; i++){
    scanf("%d%d", &x,&y);//题目说了是按照顺序排的,所以我们可以直接用 
      b[sum(x+1)]++;//将sum(x+1)的值比做有几个星星 
          update(x+1, 1); //统计星星个数 
  //顺便提一下这里x+1是为了防止在sum(1)时报错 ,加1不影响结果 
  } 
  for(int i = 0; i < n; i++)
    printf("%d\n", b[i]); 
  return 0;//此处掌声 
}
相关文章
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
815 1
|
编译器 Linux C语言
C++基础语法(命名空间,缺省,重载)
C++基础语法(命名空间,缺省,重载)
199 0
|
监控 测试技术
软件测试中的风险管理:如何避免潜在缺陷
【8月更文挑战第5天】在软件开发的生命周期中,测试阶段扮演着至关重要的角色。本文将深入探讨软件测试中的风险管理,包括风险识别、评估和缓解策略。我们将通过具体案例分析,揭示如何在早期阶段预防和减少潜在的软件缺陷,以及如何通过有效的测试计划和执行来保障产品质量。文章旨在为读者提供一套系统的风险管理框架,帮助他们在软件开发过程中识别和应对各种测试风险。
491 3
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
672 0
|
SQL 运维 Java
记一个折磨了我一天半的 Bug
一杯茶,一根烟,一个 Bug 一天根本改不完。
153 1
|
机器学习/深度学习 PyTorch 算法框架/工具
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
|
安全 小程序 Java
基于Java考研助手网站设计和实现(源码+LW+调试文档+讲解等)
基于Java考研助手网站设计和实现(源码+LW+调试文档+讲解等)
|
存储 区块链
区块链技术在版权保护与数字内容分发中的创新
区块链技术在版权保护与数字内容分发中的创新
|
存储 Oracle 关系型数据库
Oracle数据库快速入门
Oracle数据库快速入门
295 0
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
247 0

热门文章

最新文章