链接:
https://www.nowcoder.com/acm/contest/86/G
来源:牛客网
来源:牛客网
Sεlιнα(Selina) 开始了新一轮的男友海选。她要求她的男友要德智体美劳样样都全。首先进行的是文化知识竞赛。
Sεlιнα 精心准备了一套选择题,每个选择题有且只有一个正确答案。她邀请参赛男友们来答题,并回收了试卷准备批改。可是她却犯了愁。她不知道怎么快速地批改完这些试卷。她知道你是计算机大佬,就跑来请你写个程序帮她批改试卷。
Sεlιнα 会给你一份标准答案,再给你每个参赛男友的答卷。答卷中的每道题可能有一个答案, 也可能没有作答。你要做的是最后告诉 Sεlιнα 谁拿到了最高分,以及最高分的分数(分数为
分制)。Sεlιнα 喜欢优美的名字,所以如果有同样的分数,请告诉她其中字典序最小的选手名字。
![](https://i-blog.csdnimg.cn/blog_migrate/ee0357b7241ad0e8fbf25f0461844ed0.png)
不要偷懒哦!要是你告诉了 Sεlιнα 错误的答案,她会很生气的!
输入描述:
第一行两个整数
,表示有
道选择题和
个参赛男友。第二行一个长为
的字符串,表示标准答案。其中第
个字母表示第
个选择题的答案。保证所有字母在
中。接下去
行,每两行表示一个参赛男友:
![](https://i-blog.csdnimg.cn/blog_migrate/c3b968e660b828945326a24de8e92681.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a361e49e35b9ab7c6b1aa4f838d07e1e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/41b332fc52652a61dad76856000b2388.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a361e49e35b9ab7c6b1aa4f838d07e1e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88ff4f27143a830237c58526c3357b3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88ff4f27143a830237c58526c3357b3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/823dbff102c3f03ab1b2e761506ee7c8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2478aa0d346b627999b3df6f79c21bd9.png)
· 第一行一个字符串,表示参赛者姓名,保证姓名仅由大小写字母组成;
· 第二行一个长为
的字符串,表示该参赛者的答案。其中第
个字母表示该参赛者对于第
个选择题的答案。保证所有字母在
中。
表示该参赛者未作答此题。
![](https://i-blog.csdnimg.cn/blog_migrate/a361e49e35b9ab7c6b1aa4f838d07e1e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88ff4f27143a830237c58526c3357b3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88ff4f27143a830237c58526c3357b3d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/02ec00588d6fe7775405745fe5e8ddeb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4cf25ceda264c0dcba77818efb6d1a35.png)
输出描述:
输出共两行,第一行是最高分的参赛男友姓名,第二行为其分数。
分数为
分制,保留两位小数。若有多人同分,输出字典序最小的姓名。
![](https://i-blog.csdnimg.cn/blog_migrate/ee0357b7241ad0e8fbf25f0461844ed0.png)
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
char ans[100005];
struct node
{
string name;
char a[100005];
int sum;
}boy[105];
bool cmp(node a,node b)
{
if(a.sum==b.sum)
{
return a.name<b.name;
}
return a.sum>b.sum;
}
int main()
{
int m,n,i,j;
cin>>n>>m>>ans;
for(i=0;i<105;i++)
{
boy[i].sum=0;
}
for(i=0;i<m;i++)//m人
cin>>boy[i].name>>boy[i].a;
for(j=0;j<m;j++)//m人
{
for(i=0;i<n;i++)
{
if(boy[j].a[i]==ans[i])
boy[j].sum++;
}
}
sort(boy,boy+m,cmp);
cout<<boy[0].name<<endl;
printf("%.2f\n",boy[0].sum/(n*1.0)*100);
return 0;
}
//AC
//也可以把结构体放进vector数组中 进行排序
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
string ans;
struct node
{
string name;
string a;
int sum;
};
vector<node> boy;
bool cmp(node a,node b)
{
if(a.sum==b.sum)
return a.name<b.name;
return a.sum>b.sum;
}
int main()
{
int m,n,i,j;
cin>>n>>m>>ans;
node st;
for(i=0;i<m;i++)
{
cin>>st.name>>st.a;
st.sum=0;
boy.push_back(st);
}
for(j=0;j<m;j++)
{
int k=0;
boy[j].sum=0;
for(i=0;i<n;i++)
{
if(boy[j].a[i]==ans[i])
k++;
}
boy[j].sum=k;
}
sort(boy.begin(),boy.end(),cmp);
cout<<boy[0].name<<endl;
double t=boy[0].sum/(n*1.0);
t*=100;
printf("%.2lf\n",t);
return 0;
}