(字符串hash)(map)电话聊天狂人

简介: (字符串hash)(map)电话聊天狂人

题目链接

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:

输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3

一些话

不会map->second的套路,所以没办法实现通过值来找key

同时也是没看好题

切入点

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔

给出的记录是两个11位的数字,1e11的数组是开不了的,因此用map模拟hash

流程

输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。

一个输入组数的说明

看完一遍题知道对后续无用,直接while(n--)

这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。


11位数字,用long long或string读取


空格分隔,可以分两次读取


在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。


要统计的有:最大聊天次数,及其对应的手机号码


次数可以一边输入一遍迭代,不用max函数来迭代就可以统计到手机号码


如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。


没确定哪个是最大次数之前没办法知道狂人数量,最大次数要输入结束,迭代完成后才确定


因此要输入完后再遍历map,值是最大次数的话就统计


如果不唯一还要找最小狂人


,再次遍历map用次数找key,map按key自动排序,找到第一个就是狂人中最小号码

套路

map遍历

for(auto t = map.begin();t != map.end();t++){

     

}

map的key与值访问

key可以直接获取到值

用值获取key要遍历map

ac代码

// 类似模拟的题目,把条件都列出来防止遗漏
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <map>
using namespace std;
const int N = 1e5 + 10;
map<long long,int>m;
int main(){
    int t;
    cin >> t;
    int maxn = 0;
    while(t--){
        long long s1,s2;
        cin >> s1 >> s2;
        m[s1]++;
        m[s2]++;
        maxn = max(max(m[s1],m[s2]),maxn);
    }
        int cnt = 0;
    for(auto t = m.begin();t != m.end();t++){
        if(t ->second == maxn) cnt++;
    }
        for(auto t = m.begin();t != m.end();t++){
            if(t->second == maxn) {
                if(cnt != 1)
                cout << t->first << " " << t->second << " " << cnt << endl;
                else cout << t->first << " " << t->second  << endl;
                return 0;
            }
        }
}
目录
相关文章
Latex角标(subscript/superscript)
Latex角标,包括一个字符的左上,左下,右上,右下位置,具体有多重实现方式,分别适用不同情况 \documentclass[UTF8]{ctexart} \usepackage{mathtools} \usepack...
3242 0
|
数据可视化
Threejs制作服务器机房冷却结构
这篇文章详细介绍了如何使用Three.js来创建一个服务器机房的冷却结构模型,包括设计和实现机房内冷却系统的可视化表现。
149 1
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数
YOLOv5改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数
594 0
|
缓存
Vue3案例-todoMVC-pinia版 (可跟做练手)
Vue3案例-todoMVC-pinia版 (可跟做练手)
116 0
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之Managed Memory内存的含义是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
前端开发
input去掉输入框type为number时的上下箭头的实现方法
input去掉输入框type为number时的上下箭头的实现方法
282 0
|
存储 人工智能 自然语言处理
OpenAI如何让ChatGPT遵守了伦理道德的底线
OpenAI如何让ChatGPT遵守了伦理道德的底线
16762 0
|
前端开发
前端学习案例4-下拉框
前端学习案例4-下拉框
165 0
前端学习案例4-下拉框
|
网络协议 Java 数据库
从零开始的内存马分析——如何骑马反杀(三)1
从零开始的内存马分析——如何骑马反杀(三)
176 0
|
XML JavaScript 前端开发
Vue 模板、指令与修饰符
Vue 模板、指令与修饰符
207 0