1. 程式人生 > >洛谷P1042 乒乓球【模擬】

洛谷P1042 乒乓球【模擬】

大於 esp += 組成 獲得 math 描述 copy 球員

題目背景

國際乒聯現在主席沙拉拉自從上任以來就立誌於推行一系列改革,以推動乒乓球運動在全球的普及。其中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 乒乓球【模擬】