HELLO WORLD--一起|

kingwzun

园龄:3年6个月粉丝:111关注:0

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 中国大陆许可协议进行许可。

posted @   kingwzun  阅读(185)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起