PTA 7-14 电话聊天狂人(25 分)map的应用
7-14 电话聊天狂人(25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。
输入格式:
输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式:
在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。
输入样例:
4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
输出样例:
13588625832 3
利用map的性质来做这道题,起初用string,一直超时,改成long long就不超时了,长经验了
#include<bits/stdc++.h>
using namespace std;map<long long,int> p;
int main()
{int i,n,max;long long s;long long temp;scanf("%d",&n);max=0;for(i=0;i<2*n;i++){scanf("%lld",&s);if(!p.count(s)){p[s]=0;}p[s]++;if(p[s]>max)max=p[s];}map<long long,int>::iterator t;long long numb;int flag=0; int count=0;for(t=p.begin();t!=p.end();t++){if (t->second == max){count++;if(count==1)numb=t->first;} }cout<<numb;printf(" %d",max);if(count>1)printf(" %d",count);return 0;
}
如果把获取max的过程优化一下能到200ms以内
这道题利用普通数组结构体会超时,这是我第一次的代码
#include<bits/stdc++.h>
using namespace std;struct student
{char dianhua[12];
}stu[200002];bool cmp(student a,student b)
{if(strcmp(a.dianhua,b.dianhua)!=0)return strcmp(a.dianhua,b.dianhua)<0;
}map<string,int> p;
int main()
{int i,n,j,max;int count;int temp;int arr[200002];scanf("%d",&n);for(i=0;i<2*n;i++)arr[i]=1;for(i=0;i<2*n;i++){scanf("%s",stu[i].dianhua);}sort(stu,stu+2*n,cmp);for(i=0;i<2*n;i++){if(arr[i]==0)continue;for(j=i+1;j<2*n;j++){if(strcmp(stu[i].dianhua,stu[j].dianhua)==0){arr[i]++;arr[j]--;}}}max=0;for(i=1;i<2*n;i++){if(arr[i]>arr[max])max=i; }count=0;temp=arr[max];for(i=0;i<2*n;i++){if(arr[i]==temp)count++;}printf("%s %d",stu[max].dianhua,arr[max]);if(count>1)printf(" %d",count);return 0;
}
PTA 7-14 电话聊天狂人(25 分)map的应用相关推荐
- 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析
7-14 电话聊天狂人 (25 分)map做法 1:题目 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 5 ),为通话记录条数.随后N行 ...
- 7-1 电话聊天狂人 (25分) PTA 数据结构
7-1 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 5 ),为通话记录条数.随后N行,每行给出一条通话记录. ...
- 5-14 电话聊天狂人 (25分)/PTA
5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤105),为通话记录条数.随后NN行,每 ...
- 7-3 电话聊天狂人 (25 分)
暑假字符串专题HBU程序设计训练营总结 ?点这里 7-3 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105),为 ...
- 5-14 电话聊天狂人 (25分)
5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105≤ 10^5),为通话记录条数.随后N行,每行给出一条通话 ...
- 11-散列1 电话聊天狂人 (25 分) (C语言)
浙大版<C语言程序设计实验与习题指导(第3版)>题目集 11-散列1 电话聊天狂人 (25 分) 二.题解 c代码 11-散列1 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出 ...
- 电话聊天狂人 (25 分)【简便解法】
立志用最少的代码做最高效的表达 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这 ...
- 11-散列1 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的 ...
- 7-14 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105 ),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的1 ...
- 7-14 电话聊天狂人 (25分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11 ...
最新文章
- HashMap 的长度为什么是 2 的幂次方?
- R语言ggplot2可视化散点图并使用scale_y_log10函数配置Y轴对数坐标、使用ggforce包的facet_zoom函数将可视化结果中需要突出放大的区域进行放大(Zoom in)
- pytorch教程龙曲良46-55
- [推荐]ORACLE SQL:经典查询练手第三篇(不懂装懂,永世饭桶!)
- java 毕向东 内部类_java基础内部类(毕向东老师)
- MySQL定时备份(全量备份+增量备份)
- 在flask-sqlalchemy中使用max min avg方法
- 2c语言程序设计_大学生学C语言的理由是什么
- 环形线圈车辆检测器突破了LOOP-LOCK
- DBD::Oracle的库文件报失问题
- Android MVP模式 谷歌官方代码解读
- FreeBSD下使用Blogbio写cnblogs博客
- (附源码)计算机毕业设计SSM基于java语言的在线电子书阅读系统
- OpenCV图像各向异性滤波
- 【转】eclipse, Log4j配置(真心的详细~)
- 微信公众平台开发之微商城
- 关于计算机这一块儿的认识
- 星球专享 | 播放器 FFmpeg 依赖库的配置
- (贪心)CF1428E. Carrots for Rabbits
- 罕见病、新药最新研究进展(2021年9月)