牛客小白月赛2 G 文 【模拟】

链接:https://www.nowcoder.com/acm/contest/86/G
来源:牛客网

题目描述

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

备注:

 
   
  
 
  姓名长度   
   
 
 
思路:
模拟题,其实不用set也可以,用一个 name 和 value 储存即可。
 
AC码:
 1 #include <algorithm>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <cmath>
 6 #include <iostream>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 #include <vector>
11 using namespace std;
12 char cor[100000+5],ans[100000+5];
13 int main(){
14     // testin("data.in");
15  
16     int n,m;
17     cin>>n>>m;
18     scanf("%s",cor);
19     set<pair<string,int> > rank;
20     string name;
21     int sum=0;     
22     for(int i=0;i<m;i++){
23         sum=0;
24         cin>>name;
25         scanf("%s",ans);
26         if(strcmp(cor,ans)==0)
27             sum=n;
28         else{
29             for(int j=0;j<n;j++)
30                 if(cor[j]==ans[j]) sum++;
31         }
32  
33         // debug_b(name),debug_l(sum);
34  
35         if(rank.size()==0 || sum>rank.begin()->second){
36             rank.clear();
37             rank.insert(make_pair(name,sum));
38         }
39         if(sum==rank.begin()->second)
40             rank.insert(make_pair(name,sum));
41     }
42      
43     cout<<rank.begin()->first<<endl;
44     printf("%.2f\n",1.0* rank.begin()->second / n*100);
45     return 0;
46 }

 

转载于:https://www.cnblogs.com/TianyuSu/p/9398483.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值