L2-021 点赞狂魔
题目 L2-021 点赞狂魔
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using Pll = pair<ll,ll>;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
const int inf = 0x3f3f3f3f;
struct People{
string name;
set<int> likes;
double aver;
bool operator<(const People& rhs) const{
if(likes.size()!=rhs.likes.size())
return likes.size()>rhs.likes.size();
return aver<rhs.aver;
}
};
vector<People> peoples;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;cin>>n;
while(n--){
string name;int k;
cin>>name>>k;
set<int> curLikes;
for(int i=0;i<k;i++){
int tagId;cin>>tagId;
curLikes.insert(tagId);
}
double curAver=k*1.0/curLikes.size();
peoples.push_back({name,curLikes,curAver});
}
sort(peoples.begin(),peoples.end());
vector<string> res;
for (int i=0;i<3;i++) {
if(i<peoples.size()){
res.push_back(peoples[i].name);
} else {
res.push_back("-");
}
}
cout<<res[0];
for(int i=1;i<3;i++) {
cout<<" "<<res[i];
}
return 0;
}
同类题型
视频讲解
⬅️ L2-020 功夫传人 🏠 00-天梯赛 ➡️ L2-022 重排链表
💬 评论