map 与 set容器的应用--话题焦点人物

unordered_map(无序映射/哈希表)

unordered_map<int, int> b_n

  • 用途:记录每个人被提及的次数

  • 底层实现:哈希表

  • 时间复杂度:平均 O(1) 的插入、查找

  • 相关操作:

    • b_n[b]++:自动创建键值对并递增

unordered_map<int, set<int>> b_a

  • 用途:记录谁被谁提及(被提及者 -> 提及者的集合)

  • 嵌套容器 :值类型是 set<int>

  • 相关操作:

    • b_a[b].insert(a):向集合中插入元素

set(有序集合)

cpp 复制代码
unordered_map<int, set<int>> b_a;
//                ^^^^^^^^
//                红黑树实现,元素自动排序且去重
  • 底层实现:红黑树(平衡二叉搜索树)

  • 特点:

    • 元素自动按升序排列

    • 不允许重复元素

    • 插入、删除、查找:O(log n)

基于范围的 for 循环(Range-based for loop)

cpp 复制代码
for(const auto& p : b_n) {  // C++11 特性
    if(p.second > m) {
        m = p.second;
        ans = p.first;
    }
}
  • auto:自动类型推导,p 的实际类型是 pair<const int, int>

  • const auto&:const 引用,避免拷贝

  • p.first:被提及者的编号

  • p.second:被提及的次数

cpp 复制代码
for(int t : b_a[ans])  // 遍历 set 中的元素(自动升序)
    cout << t << ' ';

std::pair 的使用

在遍历 unordered_map 时,p 是 pair 类型:

cpp 复制代码
p.first   // 键(key)
p.second  // 值(value)

STL 容器的综合应用

bash 复制代码
p.first   // 键(key)
p.second  // 值(value)

AC代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main(){
    int N;
    cin >> N;
    unordered_map<int,int>b_n;//被提及的人与次数
    unordered_map<int,set<int>>b_a;//记录谁被谁提及
    while(N--){
        int a,k;
        cin >> a >> k;
        while(k--){
            int b;
            cin >> b;
            b_n[b]++;
            b_a[b].insert(a);//set自动排序去重
        }
    }
    int m = -1,ans = -1;
    for(const auto&p : b_n){//找出被提及次数最多的人
        if(p.second > m){
            m = p.second;
            ans = p.first;
        }
    }
    cout << ans << endl;
    for(int t : b_a[ans]) cout << t << ' ';
    return 0;
}
相关推荐
zaizai10073 小时前
算法(左程云)1
数据结构
charliejohn3 小时前
计算机考研 408 数据结构 图论-关键路径
数据结构·图论
David猪大卫19 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
vvilkim21 小时前
数据结构类型、区别与应用场景:一篇讲透选型逻辑
数据结构
阿卡好可爱1 天前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
心仪久了会沦陷2 天前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
码少女2 天前
数据结构——图的基础
数据结构
Severus_black2 天前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
二本咕咕-机械转码2 天前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表