当前位置: 首页 > news >正文

week4-[二维数组]平面上的点

week4-[二维数组]平面上的点

题目描述

NNN 个二维平面上的点,每个点的坐标都是整数且坐标范围都在 0∼9990\sim 9990999 之间,求其中出现最频繁的点的出现次数及其坐标。

输入格式

第一行有一个整数 NNN,表示平面上点的个数。

接下来 NNN 行,每行有两个整数,表示一个平面上的点的 x,yx,yx,y 二维坐标。

输出格式

输出的第一行为一个整数,表示平面中的点出现的最多次数。

接下来输出每行两个整数,表示出现最频繁的点的二维坐标。

  • 如果有多个点均为最频繁出现的点,则输出包括多行。输出的顺序为:先按照 xxx 坐标从小到大输出,再按照 yyy 坐标从小到大输出。

样例 #1

样例输入 #1

5
1 2
3 2
2 8
1 2
6 10

样例输出 #1

2
1 2

样例 #2

样例输入 #2

7
1 5
0 3
8 2
4 2
1 5
6 7
0 3

样例输出 #2

2
0 3
1 5

样例 #3

样例输入 #3

10
5 3
5 3
5 2
2 6
5 3
2 6
5 2
2 6
1 8
5 2

样例输出 #3

3
2 6
5 2
5 3

提示

数据范围

对于所有数据,1≤n≤500001 \le n \le 500001n50000

这题考察的是 二维点的统计与排序,重点在于:

  1. 统计每个点出现次数
  2. 找到最大出现次数
  3. 输出所有达到最大次数的点,按坐标排序

🔎 解题思路

  1. 存储与统计
    • 点的坐标范围在 [0,999],但 n 可达 50000,直接开 1000×1000 数组也行(内存约 1MB),也可以用 map<pair<int,int>, int> 来统计次数。
    • 推荐用 mapunordered_map,因为题目数据范围比较大,但点可能很稀疏。
  2. 寻找最大值
    • 遍历统计结果,找到出现次数的最大值 maxCnt
  3. 收集答案并排序
    • 遍历统计表,找出所有次数等于 maxCnt 的点,放到数组里。
    • 对结果按照 (x,y) 排序:先比 x,若相等再比 y

📝 C++ 实现

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n;cin >> n;map<pair<int,int>, int> freq;for (int i = 0; i < n; i++) {int x, y;cin >> x >> y;freq[{x, y}]++;}int maxCnt = 0;for (auto &p : freq) {if (p.second > maxCnt) maxCnt = p.second;}vector<pair<int,int>> ans;for (auto &p : freq) {if (p.second == maxCnt) ans.push_back(p.first);}sort(ans.begin(), ans.end()); // pair 默认先按 first 再按 second 排序cout << maxCnt << "\n";for (auto &pt : ans) {cout << pt.first << " " << pt.second << "\n";}return 0;
}
http://www.dtcms.com/a/350084.html

相关文章:

  • win11中系统的WSL安装Centos以及必要组件
  • 基于 Prometheus+Alertmanager+Grafana 打造监控报警后台(一)-Prometheus介绍及安装
  • 企业级监控可视化系统 Prometheus + Grafana
  • 检索模型与RAG
  • 【Day 13】189.轮转数组
  • 项目文章|MeRIP-seq助力解析m6A RNA甲基化与康乃馨花衰老的调控机制
  • Day8--HOT100--160. 相交链表,206. 反转链表,234. 回文链表,876. 链表的中间结点
  • 30.throw抛异常
  • 项目前后端分离部署
  • LVM基本操作
  • LeetCode100-189轮转数组
  • 20.15 Hugging Face Whisper-large-v2中文微调实战:LoRA+混合精度单卡训练指南,3倍效率省90%显存
  • 正则表达式学习(基础)
  • AUTOSAR进阶图解==>AUTOSAR_RS_Features
  • 电脑隐私安全防护|快速清理Windows系统/浏览器/应用数据,支持文件粉碎与磁盘级擦除!
  • 从MyJUnit反思Java项目的工程实践(版本控制篇)
  • 数据库迁移幂等性介绍(Idempotence)(Flyway、Liquibase)ALTER、ON DUPLICATE
  • RabbitMQ面试精讲 Day 30:RabbitMQ面试真题解析与答题技巧
  • 深入解析MyBatis Mapper接口工作原理
  • Ubuntu24.04配置yolov5
  • 封装的form表单,校验规则(rules)只在提交时触发,为空时点击提交触发,再次输入内容也不显示校验规则(rules)
  • 机器学习】(12) --随机森林
  • Day27 进程管理(PCB、状态、调度、原语与资源管理)
  • pikachu之Over permission
  • 基于SpringBoot的宠物领养系统的设计与实现(代码+数据库+LW)
  • QML中的Connections
  • Vue 3 defineOptions 完全指南:让组件选项声明更现代化
  • vb6编绎COM DLL(ACTIVEX对象)时兼容性设置
  • bisheng 后端初始化数据(main.py > init_data.py)
  • 25072班8.25日 数据结构作业