###### tags: `MDCPP題目題解` # 改考卷 **Author : 謝侑哲** ## 題敘 每次考完試,總是會有一些老師被抱怨改的速度太慢,每天被學生這樣煩,因此老師決定找一個方法來幫助他改考卷,正好班上有你這個會寫程式的天才,所以老師決定向你請求幫助,希望你可以幫他寫一個自動改考卷的程式。 因為班上太多GY人一直抱怨考卷改很久,所以老師決定出一張最多有10^6次方題的考卷來噁心人,而且題目每題都是有5個選項的多選題,讓你最多必須看5000000個選項才能寫完。當然你做為一介學生自然是不想寫這份考卷的,而你又剛好有撰寫改考卷程式的權力,所以自然是要透過一些方法來讓自己的高分的嘛。 計分方式如下: 全對得5分 錯一個選項得3分 錯兩個選項得1分 錯三個選項以上0分 註:沒寫到答案跟多寫答案都算錯 不過這些計分方式根本不重要,畢竟考卷可相當於你改的,因此當第一行的學生名字是"the wisest student"(你的名字)時,就把每一題都算成對的。 ## 輸入說明 在題目中,第一行會顯示學生的名字 第二行會給你一個數字$N$,代表這張考卷的題目數量 接下來有$N$個要求,在要求中 第一行有一個數字$Q$是這題正確答案的數量 接下來一行會各有$Q$個字母($A$~$E$)代表本題正確答案,並以空格隔開 接著一行有一個數字$A$代表學生給出的答案數量 接下來的一行會各有$A$個字母($A$~$E$)代表學生提交的答案。並以空格隔開 ## 輸出說明 請輸出該學生的分數 ## 範例測資 input 1 ``` AlaAla 3 3 A B C 2 A B 4 A C E D 2 C A 1 A 3 A B C ``` output 2 ``` 5 ``` input 1 ``` the_wisest_student 3 3 A B C 1 A 3 A E D 1 C 1 A 2 A C ``` output 2 ``` 15 ``` ## Hint 附註: String的宣告方式 string a; 這樣就宣告了一個string變數了,跟宣告int基本上一樣,簡單吧! 另外string是可以比較的,像是 "abc" == "dsf" 就會回傳 False "abc"=="abc"就會回傳True # 題解 ```cpp= #include <bits/stdc++.h> using namespace std; signed main(){ //freopen("10.in","r",stdin); //freopen("10.out","w",stdout); string name; cin>>name; int N; cin>>N; int ans=0; for(int i=1;i<=N;i++){ int CA,SA; int a=0,b=0,c=0,d=0,e=0; cin>>CA; for(int j=1;j<=CA;j++){ char in; cin>>in; if(in=='A') a=1; if(in=='B') b=1; if(in=='C') c=1; if(in=='D') d=1; if(in=='E') e=1; } cin>>SA; int score = 5; for(int j=1;j<=SA;j++){ char in; cin>>in; if(in=='A'&&a==1) a=0; else if(in=='B'&&b==1) b=0; else if(in=='C'&&c==1) c=0; else if(in=='D'&&d==1) d=0; else if(in=='E'&&e==1) e=0; else score-=2; } score-=a*2; score-=b*2; score-=c*2; score-=d*2; score-=e*2; if(score<0)score=0; ans+= score; } if(name=="the_wisest_student") cout<<N*5<<endl; else cout<<ans<<endl; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up