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

week4-二维数组平面上的点

题目描述

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

输入格式

第一行有一个整数 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 500001≤n≤50000。

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

  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++ 实现

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;
}
相关推荐
find1star6 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing7 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB21127 小时前
力扣160 21 86
算法·leetcode·职场和发展
Tairitsu_H7 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
小智老师PMP8 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN8 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218318 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤9 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate10 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran10 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分