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> 来统计次数。
    • 推荐用 map 或 unordered_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;
}
相关推荐
武子康14 分钟前
Qwen-Drive 到底是什么:4B 级 VLM 如何成为驾驶策略底座
人工智能·算法·机器学习
坤坤子吖1 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢1 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
zh_xuan2 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长2 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚2 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
·present·3 小时前
CSAPP(lecture 13_02 Linking)
c语言·c++
早起CaiCai3 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
梦里寻码3 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法