洛谷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分制下的结果,两部分之间由一个空行分隔。
输入输出样例
说明
每行至多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 }