AcWing 5850. 熊猫血C++
原题链接
简单
作者:
水月小脚又香又甜
,
2025-06-10 15:15:25
· 四川
,
所有人可见
,
阅读 4
要使用unordered_set替代vector、unordered_map替代map,否则会超时
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n;
unordered_set<string> patterns; //存储熊猫血
string x;
for(int i=0;i<n;i++){
cin>>x;
patterns.insert(x);
}
unordered_map<string,int> times;//记录每种熊猫血的查询次数
cin>>m;
vector<int> results(m,0); //记录输入的每种血型是否是熊猫血
int cnt=0,max=-1;//cnt存储是熊猫血的个数,max记录查询最多的熊猫血
string maxs="";//查询次数最多的熊猫血
string s;
for(int i=0;i<m;i++){
cin>>s;
unordered_set<string>::iterator it=patterns.find(s);
if(it!=patterns.end()){
results[i]=1;
times[*it]++;
if(times[*it]>max){
max=times[*it];
maxs=*it;
}
cnt++;
}
}
for(int i=0;i<m;i++){
cout<<results[i];
}
printf("\n%.2f\n",((double)cnt/m)*100);
cout<<maxs;
return 0;
}