洛谷P1042 乒乓球【模擬】
題目背景
國際乒聯現在主席沙拉拉自從上任以來就立誌於推行一系列改革,以推動乒乓球運動在全球的普及。其中111111分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了乒乓球研究工作,意圖弄明白111111分制和212121分制對選手的不同影響。在開展他的研究之前,他首先需要對他多年比賽的統計數據進行一些分析,所以需要你的幫忙。
題目描述
華華通過以下方式進行分析,首先將比賽每個球的勝負列成一張表,然後分別計算在111111分制和212121分制下,雙方的比賽結果(截至記錄末尾)。
比如現在有這麽一份記錄,(其中W
表示華華獲得一分,L
表示華華對手獲得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在111111分制下,此時比賽的結果是華華第一局111111比000獲勝,第二局111111比000獲勝,正在進行第三局,當前比分111比111。而在212121分制下,此時比賽結果是華華第一局212121比000獲勝,正在進行第二局,比分222比111。如果一局比賽剛開始,則此時比分為000比000。直到分差大於或者等於222,才一局結束。
你的程序就是要對於一系列比賽信息的輸入(WLWLWL形式),輸出正確的結果。
輸入輸出格式
輸入格式:
每個輸入文件包含若幹行字符串,字符串有大寫的WWW、LLL和EEE組成。其中EEE表示比賽信息結束,程序應該忽略E之後的所有內容。
輸出格式:
輸出由兩部分組成,每部分有若幹行,每一行對應一局比賽的比分(按比賽信息輸入順序)。其中第一部分是111111分制下的結果,第二部分是212121分制下的結果,兩部分之間由一個空行分隔。
輸入輸出樣例
輸入樣例#1: 復制WWWWWWWWWWWWWWWWWWWW WWLWE輸出樣例#1: 復制
11:0 11:0 1:1 21:0 2:1
說明
每行至多25個字母,最多有2500行
題意:
給定一些字符,W表示贏,L表示輸,E表示比賽結束。
問分別按照11分制和21分制計算,每場比分是多少。
思路:
判斷一下每一局結束的條件輸出,簡單水題。
1 //#include<bits/stdc++>2 #include<stdio.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<cstring> 6 #include<stdlib.h> 7 8 #define LL long long 9 #define ull unsigned long long 10 #define inf 0x3f3f3f3f 11 12 using namespace std; 13 14 string s[2505]; 15 string all = ""; 16 17 int main() 18 { 19 int line = 0; 20 while(cin>>s[line]){ 21 all += s[line++]; 22 } 23 24 int win = 0, lose = 0; 25 int len = all.length(); 26 for(int i = 0; i < len; i++){ 27 if(all[i] == ‘E‘){ 28 printf("%d:%d\n", win, lose); 29 break; 30 } 31 if(all[i] == ‘W‘)win++; 32 else if(all[i] == ‘L‘)lose++; 33 34 if(win == 11 && lose <= 9 || win > 11 && lose == win - 2){ 35 printf("%d:%d\n", win, lose); 36 win = lose = 0; 37 } 38 else if(lose == 11 && win <= 9 || lose > 11 && win == lose - 2){ 39 printf("%d:%d\n", win, lose); 40 win = lose = 0; 41 } 42 } 43 cout<<endl; 44 45 win = lose = 0; 46 for(int i = 0; i < len; i++){ 47 if(all[i] == ‘E‘){ 48 printf("%d:%d\n", win, lose); 49 break; 50 } 51 if(all[i] == ‘W‘)win++; 52 else if(all[i] == ‘L‘)lose++; 53 54 if(win == 21 && lose <= 19 || win > 21 && lose == win - 2){ 55 printf("%d:%d\n", win, lose); 56 win = lose = 0; 57 } 58 else if(lose == 21 && win <= 19 || lose > 21 && win == lose - 2){ 59 printf("%d:%d\n", win, lose); 60 win = lose = 0; 61 } 62 } 63 }
洛谷P1042 乒乓球【模擬】