zoukankan      html  css  js  c++  java
  • 【题解】足球比赛

    题目描述

    SJZEZ 和 TSYZ 正在进行一轮足球联谊赛,根据规则,这轮比赛有两场,一场在 SJZEZ 的主场进行,一场在 TSYZ 的主场进行。胜负判断标准如下:

    1. 在两场比赛中进球总数较多的一方赢得比赛。
    2. 如果双方进球总数相同,在对方主场进球更多的一方赢得比赛。
    3. 如果1、2都相同,胜利者将会随机产生= =

    双方已经进行了一场比赛,作为 SJZEZ 的队长,忘川沧月童鞋想知道:

    (1) 第二场 SJZEZ 最少需要进多少球,才有可能赢得比赛。
    (2) 第二场 SJZEZ 进不超过多少个球,TSYZ 才有可能赢得比赛。

    已知在一场比赛中,一方的进球数不可能多于 (30) 个。

    输入格式

    第一行一个整数 (T),表示该测试点中数据的组数。

    接下来 (T) 行,每行一个字符串,描述该组数据中第一场比赛的情况,形式如wccy's team played WHERE game, scored x goals, and conceded y goals.

    其中 WHEREhome 或者 away 中的一个,home 表示第一场比赛是在 SJZEZ 的主场进行,away表示第一场比赛是在 TSYZ 的主场进行。(x)(y) 是整数,分别表示忘川沧月的队伍的进球数,和对方的进球数。

    输出格式

    输出 (T) 行,每行包含两个用空格隔开的整数,分别是两个问题的答案。

    数据范围 (&) 评测限制

    各个测试点 (1000; extrm{ms})(1; extrm{GiB})

    对于 (100\%) 的数据,(1le tle 500)(0le x,yle 30)

    分析

    注意到题目中给出的两个子问题。我们分别考虑。

    最少要进多少个球才有可能赢

    我们用极端思维。考虑下一场对方一个都不进的情况。

    那么,我们只要从小到大枚举,找到可能获胜的点就输出。

    但是,是否在自己的主场对结构是有影响的。所以我们还要分类考虑。

    最多进多少个球对方有可能赢

    这个子问题就如出一辙了。只需要将枚举方向反过来,假设对方全进球就行了。

    Code

    下面贴上代码。如果要参考的话可以注意一下细节。

    #include <cstdio>
    using namespace std;
    
    const int max_ball = 30;
    char place[10];
    
    int main()
    {
    	int n, pa, pb, ts;
    	
    	scanf("%d", &n);
    	
    	while (n--)
    	{
    		scanf("%*s %*s %*s %s %*s %*s %d %*s %*s %*s %d %*s", place, &pa, &pb);
    		
    		if (place[0] == 'h')
    		{
    			for (ts = 0; ts <= max_ball; ts++)
    			{
    				if (pa + ts < pb)
    					continue;
    				if (pa + ts == pb && ts < pb)
    					continue;
    				
    				break;
    			}
    			printf("%d ", ts);
    			
    			for (ts = max_ball; ts >= 0; ts--)
    			{
    				if (pa + ts > pb + max_ball)
    					continue;
    				if (pa + ts == pb + max_ball && ts > pb)
    					continue;
    				
    				break;
    			}
    			
    			printf("%d
    ", ts);
    		}
    		else
    		{
    			for (ts = 0; ts <= max_ball; ts++)
    			{
    				if (pa + ts < pb)
    					continue;
    				
    				break;
    			}
    			printf("%d ", ts);
    			
    			for (ts = max_ball; ts >= 0; ts--)
    			{
    				if (pa + ts > pb + max_ball)
    					continue;
    				
    				break;
    			}
    			printf("%d
    ", ts);
    		}
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    Apache+Tomcat+Mysql+php整合jsp,php
    mysql数据类型详析(转)
    有向图(拓扑排序算法)
    FLEX获取GET数据
    Flex对象与组件的数据 双向绑定
    D3D学习摘记(I)中
    [转贴]深入理解Javascript闭包
    一个相当愚蠢的概念错误
    近日小记
    D3D学习摘记(I)上
  • 原文地址:https://www.cnblogs.com/5ab-juruo/p/solution-20200217-play.html
Copyright © 2011-2022 走看看