【数组数组】应用

一.题目

 样例输入:

5
7 1
5 1
5 5
3 3
1 1

样例输出:

1
2
1
1
0


二.分析

 有两个数据:x,y。

我们不妨先将x排序,再判断y,若小于,就++即可。

这是暴力的思路

for(int i=1;i<=n;i++){int ans=0;for(int j=1;j<=n && i!=j;j++)if(a[j].y<=a[i].y)ans++;s[ans]++;
}

但这是O(n^2),肯定回超时。

这时,我们可以想到,不妨我们做累加,即统计这个数出现的个数。这样遇见比它大的数直接加上即可,不用再次遍历。

就是我们可以把每颗星星都看做一个点,比他大的数都要累加上1,若要看看小于i的星星的个数,求c【1到i】的值即可。(就是比它小的所有数出现的个数)。

这里可以用到树状数组。


三.参考代码

/*
5
7 1
5 1
5 5
3 3
1 1
*/
#include<bits/stdc++.h>
using namespace std;
struct node{int x,y;
}data[1001];
int n;
int c[1001],s[1001];  //c为下边元素出现的次数,s为结果数组 
bool cmp(node a,node b){return a.x==b.x? a.y<b.y : a.x<b.x;
}
int sum(int x){int ans=0;for(int i=x;i>0;i-=(i&(-i))){ans+=c[i];}return ans;
}
void updata(int x){for(int i=x;i<=n;i+=(i&(-i))){c[i]++; }
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){cin>>data[i].x>>data[i].y;}sort(data+1,data+1+n,cmp);for(int i=1;i<=n;i++){s[sum(data[i].y+1)]++;updata(data[i].y+1);}for(int i=0;i<n;i++){cout<<s[i]<<endl;}return 0;
}

四.补充

不用担心找不到所有的数,因为都可以找到

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55106.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端页面--视觉差效果

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><link rel"stylesheet" href"https://un…

51单片机IIC方式驱动oled屏代码示例

以IIC方式驱动oled屏特点就是四根线&#xff0c;分别是GND,VCC,SCL,SDA。前面两根很好理解&#xff0c;GND接地&#xff0c;VCC电源正极。SCL接时钟信号&#xff0c;SDA接双向数据信号。在51单片机电路中&#xff0c;没有明确表示SCL和SDA的数据接口&#xff0c;需要自定义。 而…

【深度学习】Vision Transformer论文,ViT的一些见解《 一幅图像抵得上16x16个词:用于大规模图像识别的Transformer模型》

必看文章&#xff1a;https://blog.csdn.net/qq_37541097/article/details/118242600 论文名称&#xff1a; An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale 论文下载&#xff1a;https://arxiv.org/abs/2010.11929 官方代码&#xff1a;https:…

Java项目-苍穹外卖-Day02

完善用户登陆功能 就对密码进行md5加密处理 1.改数据库内部的密码&#xff0c;改成md5加密后的 2.改Service的逻辑&#xff0c;将传过来的进行md5加密后再比较(controller是发令牌&#xff0c;和返回VO对象那逻辑) 先更新数据 如果不改java代码进行登陆&#xff0c;肯定会失…

Maven-生命周期及命令

关于本文 ✍写作原因 之前在学校学习的时候&#xff0c;编写代码使用的项目都是单体架构&#xff0c;导入开源框架依赖时只需要在pom.xml里面添加依赖&#xff0c;点一下reload按钮即可解决大部分需求&#xff1b;但是在公司使用了dubbo微服务架构之后发现只知道使用reload不足…

【Groups】50 Matplotlib Visualizations, Python实现,源码可复现

详情请参考博客: Top 50 matplotlib Visualizations 因编译更新问题&#xff0c;本文将稍作更改&#xff0c;以便能够顺利运行。 1 Dendrogram 树状图根据给定的距离度量将相似的点组合在一起&#xff0c;并根据点的相似性将它们组织成树状的链接。 新建文件Dendrogram.py: …

pycharm打开terminal报错

Pycharm打开终端报错如何解决&#xff1f;估计是终端启动conda不顺利&#xff0c;需要重新设置路径。参考以下文章的做法即可。 Windows下Pycharm中Terminal无法进入conda环境和Python Console 不能使用 给pycharm中Terminal 添加新的shell&#xff0c;才可以使用conda环境 W…

20天学会rust(一)和rust say hi

关注我&#xff0c;学习Rust不迷路 工欲善其事&#xff0c;必先利其器。第一节我们先来配置rust需要的环境和安装趁手的工具&#xff0c;然后写一个简单的小程序。 安装 Rust环境 Rust 官方有提供一个叫做 rustup 的工具&#xff0c;专门用于 rust 版本的管理&#xff0c;网…

自然语言处理学习笔记(二)————语料库与开源工具

目录 1.语料库 2.语料库建设 &#xff08;1&#xff09;规范制定 &#xff08;2&#xff09;人员培训 &#xff08;3&#xff09;人工标注 3.中文处理中的常见语料库 &#xff08;1&#xff09;中文分词语料库 &#xff08;2&#xff09;词性标注语料库 &#xff08;3…

kafka权威指南(阅读摘录)

零复制 Kafka 使用零复制技术向客户端发送消息——也就是说&#xff0c;Kafka 直接把消息从文件&#xff08;或者更确切地说是 Linux 文件系统缓存&#xff09;里发送到网络通道&#xff0c;而不需要经过任何中间缓冲区。这是 Kafka 与其他大部分数据库系统不一样的地方&#…

docker 配置 Mysql主从集群

Docker version 20.10.17, build 100c701 MySQL Image version: 8.0.32 Docker container mysql-master is source. mys ql-replica is replication. master source. replica slave.名称叫法不一样而已。 Choose one of the way&#xff0c;与replica同步数据两种情况&…

Linux:在使用UEFI固件的计算机上内核是如何被启动的

前言 启动计算机通常不是一件难事&#xff1a;按下电源键&#xff0c;稍等片刻&#xff0c;你就能看到一个登录界面&#xff0c;再输入正确的密码&#xff0c;就可以开启一天的网上冲浪之旅了。 但偶尔这件事没那么顺利&#xff0c;有时候迎接你的不是熟悉的登录界面&#xf…