洛谷之P1042 [NOIP2003 普及组] 乒乓球

文章讲述了华华对乒乓球比赛数据进行11分制和21分制对比分析的研究,涉及比赛结果的实时对应处理和结构化数据存储,通过编程解决比赛信息输入并输出对应比分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目背景

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

题目描述

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

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

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

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

输入格式

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

输出格式

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

说明/提示

对于 100%100%的数据,1≤100,1≤1001≤n≤100,1≤m≤100。


题解

分析

首先观察题目细节

37016315950d4165a15e0dc19e42d5d0.png

分差大于或者等于2才会结束,这是本题关键!(我也是在无数WA中才回读题目明了的,深刻体现认真读题的重要性!)

其次勾勒轮廓

统计->分类->输出

若只是单纯统计W和L,是无法继续的,该题的规则体现了两种数据的实时对应性,因此考虑到数组,倘若有两个数组一一对应,看起来又会麻烦,不妨使用结构体数组,将二者统一起来!

根据规则分类,达到11可能赢,这就是题目细节否定的“达到11一定赢”

因此一方大于等于11并且和另一方的差距小于等于2才能停下本局竞争从而判断输赢

请看代码!

代码

#include<iostream>
#include<cmath>
using namespace std;
struct c11                     //11分组
{
    int a;
    int b;
}c1[10000];
struct c21                     //21分组
{
    int a;
    int b;
}c2[10000];
int main()
{
    int w=0,l=0;
    char c;
    int m=0,n=0;
    int x=0,y=0;
    int i,j;
    while(cin>>c)
    {
        if(c=='W') w++,x++;
        else if(c=='L') l++,y++;
        else if(c=='E')break;
        if((l>=11&&abs(w-l)>=2)||(w>=11&&abs(w-l)>=2))//题之亮点1:根据题目细节写出绝对值                                                        
        {                                              //11分制,若一方达11,但另一方为10,
            c1[m].a=w;                                //比赛仍将继续
            c1[m].b=l;
            m++;
            w=0;
            l=0;
        } 
        if((x>=21&&abs(x-y)>=2)||(y>=21&&abs(x-y)>=2))//题之亮点2:同上理

        {
            c2[n].a=x;
            c2[n].b=y;
            n++;
            x=0;
            y=0;
        }
    }
    c1[m].a=w;                                        //余下的项自动成组
    c1[m].b=l;
    c2[n].a=x;
    c2[n].b=y;

    for(i=0;i<=m;i++)                                    //输出即可
    cout<<c1[i].a<<":"<<c1[i].b<<endl;
    cout<<endl;
    for(j=0;j<=n;j++)
    cout<<c2[j].a<<":"<<c2[j].b<<endl;
    cout<<endl;

    return 0;
}

 

至此,本题结束!

路远常逢!

输入与输出

 输入1:

WWWWWWWWWWWWWWWWWWWW WWLWE

输出1:

11:0
11:0
1:1

21:0
2:1

输入2:

WWLWWWWLWWWWLWWWWWWL
WWWWWLWWWWWLWWWWWLWW
WWLWWWWWLWLWWLWLLWWL
WWLLLWWWLWLWWLWWWWWW
WWWWWWLLWLWWLWWLWWLW
WWLWLWWLWWLWWWWLWWWL
LLWWWWLLLWWWLWWWLLWW
LWWWWWLLWWWWLWLWWWWW
WWWWLLWWWWWWWLWWLWLW
WLLWWLLWLWLLWWLLWWWW
LWWLLLLWLWWWLLWWWLWL
WWWWWWWLWWLLLWWLWWLW
WLWWWLLLWWWLWWWWLLLL
WWWWWWWWWLLLWLWLWWLW
WLWWWLWWWWLWWWWWWWWL
WWLWWWWWWWLLWWLWWWLW
WLWLWWWWLWWWWLWLWWWL
WWLWLLLLWWWLWWWWWWWL
WWWWWWWWLWWWWLWLWWLL
LLWWWWLWWLWLLLWWWWLW
WLWWWWLWLWLWWWWWWLWL
WWWWLWWWWWWWLLWWLLWW
LLLWLWWWWLLLLWWLWLLL
WWLWWWWLWWWWWWWLLWWL
WWWLWWWLWWWWWWWLLLWW
WLWWWLWWWWWLWWLLWLLW
WWWWWWWWLLWLLWLWWWLW
WWLWWWLLWWWWLWWWWWLW
WWWWWWWLWWWLLWWWWWWL
WLLWLWWWLLWLWLWWWWWL
WWLLWWWWWWWWWLLWLLWW
LWLLWLWLLWWWLWLWLLWW
WWLWWWWWLLLWLWWWWWWL
WLWLWWLWLLLWLLLWWWWL
WWWWWLWLLWWLLWLWLWLW
LWLLLWWLLWLWWWWWWWWW
WWWLLWWWWLWWWWLLWLWL
WLWLWWWLWWWLLWWLWLLW
WWWWWWWWLLWWLWWLLLWW
LWWWLWWWWWWWLWLWWWWW
WWLWLLWWWLWWLLWLLLWL
WLWWWLLWWWWLLWWLWWWL
LWWWLWLWLWWWWWWLWWWW
WWWWWLLWWLWWLLLWWWWW
LWWLLWWWWWLWWLWWWLLW
WLWWWWWWWLLWLLWLWLWW
LLWWLWWWLWLLLWLLWWWW
WWLLWWLWWWWLWWLWLWWL
LLWLWLWWWWWLLWWWLLLW
LLLLWWWLLLWLWWWWLWLW
WWWWWWLLWLWLWLWWWWWL
LWLWWWLWLWLWWWWWLLWW
LWLWWWWWWLWWWWWWLWLL
LLLWWWWLWLWWLWWWWLLW
WLLWWLWLLWWWLWLLWLLW
WWWLWWLWLLWWLWLWWWWW
WWWWWWLLWWLLWWLLLLWW
WWLLLWWLLWWWWWWLWWWW
WWWWLLWWWLWWWLWWWLLW
WLLLLLWWLWLLWWWWWWWW
WWLWWWWWLWWLWWWWWWWW
WLWWWWLWLWLWLLWWWLLW
WWWWWWLWWWWLWLWWWLLW
WWWWWWWWWWWWLWWLWLWL
WWLLWWWLWWWWWLWLWWWW
WLWWLWWWLWLLWWLWWWLL
WLWWWWLWLWWWWLWWLWWW
WLWWLLWWWWWLWWWLWWWW
LWWLWWWLLWLLWWWLLLLL
LWLLLWWWWWLLWWWWWLLL
LWWLWWWLWLWLWWLWWWWL
WLWWWWWLLWLWWWWWWWWW
WWWWWLWLWWWWLLLWLWWL
WLWWLLWWLWLWWLLWLWLW
WLLWLLLWWLWWLLWLWWLW
WLWWLWWWWWWLWWWLLWWW
LLWLWWLWWWLLWLWWWWWW
WLLLWWWWLWLWWWWWWLWL
WWLWWWWLWLWWLLWLWLWW
WLWLLLWWLWLWWLLWWWWL
WWWWWWWLWWLWWWWWLWWW
WWWWWWLWLWWLWWWLWWWL
WWLLWWLLWWLWWLWWLLLW
WLWWLWWWLWLWWLWWWWWW
WWLWLLWLLWWWLWLWWWWW
WWLWLLWWWLWWLWWWWWLW
LWLWWLLWWWWWWLWWWWLL
WWWLWLLLWLLWLWWWWWWW
WWWWWWLWWWLWLWWWWLLW
WLLWLLWLLLWWWWWWWWWL
WLWWLWWLLLWLWLWWWLWL
LWWLWLWWWWWWWWLLWWWL
WWWWWWWWLWWWWLWWWWWL
WWWWLWLWWWWWWWLWLLWW
WWLWWLLWLWLLWLWLWWWW
WWLWLWLWWLWLLLLWWLWW
WLWWWWWWLWLWWWWWLWLW
WWLWLWWWWLLWLWWWLWWL
WWWWLWWLWLLWLWWWLWWW
LWWLWWLWLWWLWLWWWWWW
E
 

输出2:

11:3
11:2
11:2
11:4
11:9
11:0
11:7
11:4
11:9
11:4
11:3
11:5
11:8
11:9
11:6
11:5
11:8
11:4
11:3
11:3
11:4
11:9
11:1
11:7
11:6
11:4
11:3
11:8
12:10
11:4
11:4
11:3
11:6
11:7
11:2
11:3
11:8
11:3
12:10
11:5
11:7
11:8
9:11
11:4
11:3
11:7
11:5
11:8
11:2
11:9
11:7
11:5
11:1
11:7
11:6
11:6
12:10
11:4
11:9
7:11
11:2
11:8
11:5
11:3
11:9
11:7
11:9
11:2
9:11
11:3
11:3
8:11
11:1
11:2
11:4
11:5
11:4
11:1
11:6
11:4
11:7
11:4
11:4
11:7
8:11
11:6
11:5
11:3
11:2
16:18
11:7
11:4
11:7
11:5
11:3
14:12
11:3
11:3
11:3
11:7
11:8
11:4
11:4
11:5
11:6
11:9
11:0
11:7
11:6
12:10
11:4
11:2
11:2
11:5
11:8
11:9
11:3
11:4
11:5
11:7
11:5
2:0

21:4
21:6
21:10
21:10
21:11
21:6
21:18
21:11
21:13
21:6
21:7
21:10
21:12
21:8
21:17
21:6
21:10
21:9
21:5
21:11
21:15
21:15
21:15
21:10
21:12
21:6
21:16
21:9
21:8
21:15
21:13
21:17
21:11
21:10
21:17
21:12
21:7
21:11
21:8
21:7
21:7
21:11
21:8
21:16
21:13
21:5
22:20
21:12
21:9
21:14
21:7
21:7
21:12
21:11
21:9
21:8
21:13
21:13
21:4
21:13
21:10
21:10
21:11
7:2
 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值