算法竞赛题解:乒乓球

简介: 算法竞赛题解:乒乓球

[NOIP2003 普及组] 乒乓球

题目背景

国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 $11$ 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 $11$ 分制和 $21$ 分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。

题目描述

华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 $11$ 分制和 $21$ 分制下,双方的比赛结果(截至记录末尾)。

比如现在有这么一份记录,(其中 $\texttt W$ 表示华华获得一分,$\texttt L$ 表示华华对手获得一分):

$\texttt{WWWWWWWWWWWWWWWWWWWWWWLW}$

在 $11$ 分制下,此时比赛的结果是华华第一局 $11$ 比 $0$ 获胜,第二局 $11$ 比 $0$ 获胜,正在进行第三局,当前比分 $1$ 比 $1$。而在 $21$ 分制下,此时比赛结果是华华第一局 $21$ 比 $0$ 获胜,正在进行第二局,比分 $2$ 比 $1$。如果一局比赛刚开始,则此时比分为 $0$ 比 $0$。直到分差大于或者等于 $2$,才一局结束。

你的程序就是要对于一系列比赛信息的输入($\texttt{WL}$ 形式),输出正确的结果。

输入格式

每个输入文件包含若干行字符串,字符串有大写的 $\texttt W$ 、 $\texttt L$ 和 $\texttt E$ 组成。其中 $\texttt E$ 表示比赛信息结束,程序应该忽略 $\texttt E$ 之后的所有内容。

输出格式

输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是 $11$ 分制下的结果,第二部分是 $21$ 分制下的结果,两部分之间由一个空行分隔。

样例 #1

样例输入 #1

WWWWWWWWWWWWWWWWWWWW
WWLWE

样例输出 #1

11:0
11:0
1:1

21:0
2:1

提示

每行至多 $25$ 个字母,最多有 $2500$ 行。

(注:事实上有一个测试点有 $2501$ 行数据。)

【题目来源】

NOIP 2003 普及组第一题

我的做法:

#include<iostream>
#include<cmath>
using namespace std;
int f[2] = {11,21};
int a[2500 * 25 + 10],n = 0;
int main(){
    char tmp;
    while(1){
        cin >> tmp;
        if(tmp == 'E') break;
        else if(tmp == 'W') a[n++] = 1;
        else if(tmp == 'L') a[n++] = 0;
    }
    for(int k = 0;k < 2;k++){
        int w = 0,l = 0;
        for(int i = 0;i < n;i++){
            w += a[i]; l += 1 - a[i];
            if(max(w,l) >= f[k] && abs(w - l) >= 2){
                cout << w << ":"<< l <<endl;
                w = l = 0;
            }
        }
        cout << w <<":"<< l << endl;
        cout << endl;
    }
    return 0;
}
目录
相关文章
|
10月前
|
移动开发 Shell
蓝桥杯:2020 国赛 例题:天干地支
蓝桥杯:2020 国赛 例题:天干地支
50 0
|
14天前
|
C++
【洛谷 P1428】小鱼比可爱 题解(循环)
这是一个编程竞赛问题,题目要求编写一个程序来计算每只鱼在其视野内看到的更不可爱的鱼的数量。给定鱼的总数`n`和每只鱼的可爱程度数组`a[]`,输出每个位置的鱼能看到的更不可爱的鱼的数量。 **摘要:** ```markdown 解决一个编程挑战,计算鱼在“比可爱”比赛中左边有多少条更不可爱的鱼。输入包含鱼的总数`n`和每条鱼的可爱度,输出每条鱼眼中更不可爱的鱼数。提供的C++代码通过遍历数组,比较每只鱼的可爱度并累计小于它的数量,然后输出结果。 ``` 这个摘要在240个字符以内,简要概述了问题的背景、任务和解决方案的概要。
9 0
|
2月前
|
存储
每日一题——leetcode682.棒球比赛
每日一题——leetcode682.棒球比赛
|
12月前
|
机器学习/深度学习 存储 自然语言处理
牛客竞赛每日俩题 - 动态规划1
牛客竞赛每日俩题 - 动态规划1
|
11月前
两道智力题
两道智力题
|
11月前
|
算法 C语言 C++
LeetCode 每日一题2347. 最好的扑克手牌
给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小
62 0
|
12月前
|
机器学习/深度学习
牛客竞赛每日俩题 - 动态规划2
牛客竞赛每日俩题 - 动态规划2
|
12月前
|
存储 Windows
牛客竞赛每日俩题 - 动态规划4
牛客竞赛每日俩题 - 动态规划4
|
12月前
|
JavaScript
牛客竞赛每日俩题 - 动态规划3
牛客竞赛每日俩题 - 动态规划3
|
算法 C++ Python
【每日算法Day 87】今天我脱单了,所以大家不用做题了!
【每日算法Day 87】今天我脱单了,所以大家不用做题了!

热门文章

最新文章