文时间限制1秒 空间限制256M知识点枚举网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述S ε l ι н α ( S e l i n a ) Sεlιнα(Selina)Sεlιнα(Selina)开始了新一轮的男友海选。她要求她的男友要德智体美劳样样都全。首先进行的是文化知识竞赛。S ε l ι н α SεlιнαSεlιнα精心准备了一套选择题每个选择题有且只有一个正确答案。她邀请参赛男友们来答题并回收了试卷准备批改。可是她却犯了愁。她不知道怎么快速地批改完这些试卷。她知道你是计算机大佬就跑来请你写个程序帮她批改试卷。S ε l ι н α SεlιнαSεlιнα会给你一份标准答案再给你每个参赛男友的答卷。答卷中的每道题可能有一个答案 也可能没有作答。你要做的是最后告诉S ε l ι н α SεlιнαSεlιнα谁拿到了最高分以及最高分的分数分数为100 100100分制。S ε l ι н α SεlιнαSεlιнα喜欢优美的名字所以如果有同样的分数请告诉她其中字典序最小的选手名字。不要偷懒哦要是你告诉了S ε l ι н α SεlιнαSεlιнα错误的答案她会很生气的输入描述第一行两个整数N , M N,MN,M表示有N NN道选择题和M MM个参赛男友。第二行一个长为N NN的字符串表示标准答案。其中第i ii个字母表示第i ii个选择题的答案。保证所有字母在A , B , C , D A,B,C,DA,B,C,D中。接下去2 M 2M2M行每两行表示一个参赛男友第一行一个字符串表示参赛者姓名保证姓名仅由大小写字母组成第二行一个长为N NN的字符串表示该参赛者的答案。其中第i ii个字母表示该参赛者对于第i ii个选择题的答案。保证所有字母在A , B , C , D , X A,B,C,D,XA,B,C,D,X中。X XX表示该参赛者未作答此题。输出描述输出共两行第一行是最高分的参赛男友姓名第二行为其分数。分数为100 100100分制保留两位小数。若有多人同分输出字典序最小的姓名。示例1输入5 3 ADBBC spiderman ADBAC niconico BDXBC ekstieks ACBBC输出ekstieks 80.00备注1 ≤ N ≤ 10 5 1≤N≤10^51≤N≤1051 ≤ M ≤ 100 1≤M≤1001≤M≤1001 ≤ 姓名长度 ≤ 50 1≤ 姓名长度 ≤501≤姓名长度≤50解题思路本题核心是逐参赛者统计得分并筛选最优结果先读取题目数n nn、参赛人数m mm和标准答案字符串初始化最高分− 1 -1−1和对应姓名遍历每位参赛者读取姓名和答卷字符串逐题比对答案仅当答卷答案与标准答案一致时计分统计正确题数若当前正确数高于记录的最高分更新最高分和对应姓名若正确数相等则比较姓名字典序保留更小的姓名最后将正确题数转换为100 100100分制正确数× 100 / n ×100/n×100/n输出最优姓名和保留两位小数的分数。该方法时间复杂度为O ( M × N ) O(M×N)O(M×N)适配N ≤ 1 e 5 N≤1e5N≤1e5、M ≤ 100 M≤100M≤100的规模通过逐题比对精准统计得分严格遵循“同分选字典序最小”的规则高效得到最终结果。代码内容#includebits/stdc.husingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpairll,llpii;constll p1e97;constll N1e610;intmain(){ll n,m;cinnm;string s;cins;string sf;doublescore-1;while(m--){string tf;cintf;string ts;cints;ll fen0;for(ll i0;in;i){if(s[i]ts[i])fen;}if(fenscore){sftf;scorefen;}elseif(fenscore){if(tfsf)sftf;}}score(score*100)/n;coutsfendl;printf(%.2lf\n,score);return0;}