1. 程式人生 > >牛客小白月賽2 G 文 【模擬】

牛客小白月賽2 G 文 【模擬】

algo 思路 大小 cstring 字符 20M 所有 desc ans

鏈接: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 }

牛客小白月賽2 G 文 【模擬】