题目描述
Sεlιнα(Selina) 开始了新一轮的男友海选。她要求她的男友要德智体美劳样样都全。首先进行的是文化知识竞赛。
Sεlιнα 精心准备了一套选择题,每个选择题有且只有一个正确答案。她邀请参赛男友们来答题,并回收了试卷准备批改。可是她却犯了愁。她不知道怎么快速地批改完这些试卷。她知道你是计算机大佬,就跑来请你写个程序帮她批改试卷。
Sεlιнα 会给你一份标准答案,再给你每个参赛男友的答卷。答卷中的每道题可能有一个答案, 也可能没有作答。你要做的是最后告诉 Sεlιнα 谁拿到了最高分,以及最高分的分数(分数为
分制)。Sεlιнα 喜欢优美的名字,所以如果有同样的分数,请告诉她其中字典序最小的选手名字。
不要偷懒哦!要是你告诉了 Sεlιнα 错误的答案,她会很生气的!
输入描述:
第一行两个整数
,表示有
道选择题和
个参赛男友。第二行一个长为
的字符串,表示标准答案。其中第
个字母表示第
个选择题的答案。保证所有字母在
中。接下去
行,每两行表示一个参赛男友:
· 第一行一个字符串,表示参赛者姓名,保证姓名仅由大小写字母组成;
· 第二行一个长为
的字符串,表示该参赛者的答案。其中第
个字母表示该参赛者对于第
个选择题的答案。保证所有字母在
中。
表示该参赛者未作答此题。
输出描述:
输出共两行,第一行是最高分的参赛男友姓名,第二行为其分数。
分数为
分制,保留两位小数。若有多人同分,输出字典序最小的姓名。
示例1
输入
5 3 ADBBC spiderman ADBAC niconico BDXBC ekstieks ACBBC
输出
ekstieks 80.00
备注:
姓名长度
水题,定义一个结构体,简单的排序就好了,题目链接:题目链接
#include<cstring> #include<cstdio> #include<algorithm> #include<iostream> #include<queue> using namespace std; struct node{ char name[10001]; char answer[200005]; int score; }temp[1005]; int cmp(const node &a,const node &b){ if(a.score==b.score){ return strcmp(a.name,b.name)<0; } return a.score>b.score; } int main(){ int n,t;//n代表参赛男友的数量,t代表题目的数量 int i,j; char string[100005]; //priority_queue<node> que; scanf("%d%d",&n,&t); scanf("%s",string); for(i=0;i<t;i++){ scanf("%s",temp[i].name); //getchar(); scanf("%s",temp[i].answer); for(j=0;j<n;j++){ if(temp[i].answer[j]==string[j]){ temp[i].score++; } } } sort(temp,temp+t,cmp); printf("%s\n",temp[0].name); printf("%.2lf\n",temp[0].score*(100.0/n)); return 0; }