7-5 悄悄关注 (25 分)
题解
朴素的题目,注意几个坑点
- 按用户ID字母序的升序输出可能是其悄悄关注的人
- 即使这个人属于光明正大关注的,计算总关注数量的时候也要累加上
代码1
这个代码没有代码2通用,但是更好理解
#include <bits/stdc++.h> using namespace std; map<string,int> mp; int main() { int n;cin>>n; for(int i=0;i<n;i++){ string a; cin>>a; mp[a]=1; } int m;cin>>m; int num=0; double cnt=0;//平均点赞数 for(int i=0;i<m;i++){ string a;cin>>a; int b;cin>>b; cnt+=b; if(mp[a]) mp[a]=-1;//如果存在,则为明显关注的人,一定不是我们答案,故把权值设为-1,代表删除该名字 else mp[a]=b; } cnt/=m; int flag=1; for(pair<string,int> t: mp){ if(t.second>=cnt){ flag=0; cout<<t.first<<endl; } } if(flag) cout<<"Bing Mei You"<<endl; return 0; }
代码2
如果题目要求其他变态的排序方式,这要写更好
map排序毕竟相对麻烦
#include <bits/stdc++.h> using namespace std; typedef long long ll; const double inf=0x3f3f3f3f; map<string,int> mp; string b[11111]; int main() { int n; cin>>n; for(int i=0;i<n;i++){ string t; cin>>t; mp[t]=1; } int m; cin>>m; double cnt=0; for(int i=0;i<m;i++){ int tt; cin>>b[i]>>tt; if(! mp[ b[i] ]){ mp[b[i]]=tt; } else { b[i]="0"; } cnt+=tt; } cnt/=m; int flag=0; sort(b,b+m); for(int i=0;i<m;i++){ if(b[i]!="0"&&mp[b[i]]>cnt){ cout<<b[i]<<endl; flag=1; } } if(flag==0){ cout<<"Bing Mei You"<<endl; } }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15685325.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步