NC15521. 文
描述
输入描述
第一行两个整数 ,表示有 道选择题和 个参赛男友。第二行一个长为 的字符串,表示标准答案。其中第 个字母表示第 个选择题的答案。保证所有字母在 中。接下去 行,每两行表示一个参赛男友:· 第一行一个字符串,表示参赛者姓名,保证姓名仅由大小写字母组成;· 第二行一个长为 的字符串,表示该参赛者的答案。其中第 个字母表示该参赛者对于第 个选择题的答案。保证所有字母在 中。 表示该参赛者未作答此题。
输出描述
输出共两行,第一行是最高分的参赛男友姓名,第二行为其分数。分数为 分制,保留两位小数。若有多人同分,输出字典序最小的姓名。
示例1
输入:
5 3 ADBBC spiderman ADBAC niconico BDXBC ekstieks ACBBC
输出:
ekstieks 80.00
C++14(g++5.4) 解法, 执行用时: 300ms, 内存消耗: 740K, 提交时间: 2019-09-21 22:38:01
#include<iostream> #include<cstring> using namespace std; int main() { int n,m;string right;string name;int score=-1; cin>>n>>m>>right; while(m--) { string na,ans;int count=0; cin>>na>>ans; for(int i=0;i<n;i++) { if(ans[i]==right[i]) count++; } if(count>score) { score=count; name=na; } else if(count==score) { if(na<name) name=na; } } cout<<name<<endl; printf("%.2lf\n",score*1.0/n*100); return 0; }
C++(clang++11) 解法, 执行用时: 210ms, 内存消耗: 712K, 提交时间: 2020-11-04 21:32:45
#include<iostream> using namespace std; int n,m,cnt=-1,now; string s,t,name,ans; double point; int main(){ cin>>n>>m; cin>>s; for(int i=1;i<=m;i++){ cin>>name; cin>>t; now=0; for(int j=0;j<s.length();j++){ if(s[j]==t[j]){ now++; } } if(now>cnt){ cnt=now; ans=name; } else if(now==cnt&&name<ans){ ans=name; } } point=100.0/n*cnt; cout<<ans<<"\n"; printf("%.2f\n",point); }
pypy3(pypy3.6.1) 解法, 执行用时: 399ms, 内存消耗: 25428K, 提交时间: 2020-02-06 14:45:16
n,m=map(int,input().split()) s=input() name='zzzzzzz' score=0 for i in range(m): nn=input() ss=input() cnt=0 for j in range(n): if ss[j]==s[j]: cnt+=1 if cnt == score and nn < name: name=nn if cnt>score: name=nn score=cnt print(name) ans=score*100.0/n print('%.2f' % ans)
Python(2.7.3) 解法, 执行用时: 1793ms, 内存消耗: 3636K, 提交时间: 2018-04-21 19:08:52
n, m = map(int, raw_input().split()) a = raw_input() bf = [] for _ in xrange(m): name, ans = raw_input(), raw_input() bf.append((name, len([1 for i in xrange(n) if a[i] == ans[i]]))) bf.sort(key = lambda x: x[0]) bf.sort(key = lambda x: x[1], reverse = True) print bf[0][0] print '%.2f' % (bf[0][1] * 100 / float(n))
Python3(3.5.2) 解法, 执行用时: 1670ms, 内存消耗: 12180K, 提交时间: 2019-08-12 15:45:47
n, m = map(int, input().split()) t = input() c, a = -1, '' while m > 0: m -= 1 x, y = input(), input() cc = 0 for i in range(n): if y[i] == t[i]: cc += 1 if cc > c or (cc == c and x < a): c, a = cc, x print(a) print('%.2f' % (100.0*c/n))