当前位置: 首页 > news >正文

【t049】【u001】足球

Time Limit: 1 second
Memory Limit: 128 MB

【问题描述】

我们当中有很多热爱中国足球的同学,我们都知道中超(中国足球超级联赛)的规则:
一场比赛中,若获胜(即你的得分严格大于对手得分)则获得3的积分,若打平(即你的得分等于对手得分)则获得1分,若失败(即
你的得分严格小于对手得分)获得0积分。
这个问题很简单,假设N轮比赛中你一共攻入S个球,丢掉T个球,那么你可能获得的最大得分和最小得分是多少? 

【输入格式】

多组数据,每组数据一行:
一行三个整数S、T、N(S、T >= 0,N >= 1)。 

【输出格式】

对于每组数据输出一行,两个整数表示最大得分和最小得分。

Sample Input

1 1 1
1 1 2


Sample Output

1 1
3 2

 

【题解】

神经病一样的题。

没有严密的思维根本写不出来好吗。

最好的情况要从最好到次好判断

最坏的情况则要从最坏到次坏这样。。

然后总体的思路就是如果能全赢则是最好的。否则就尝试在第一场就把所有球都丢掉。剩余的看一下能不

能用进的球填满(每场只填1个球)。如果填不满就只好平局啦。

然后最坏情况是全都输(如果可以)。或者是第一场把所有的进球都进了。然后剩余n-1场全输。。。

哎,没有这么简单。还要判断的一些小细节很多。总之很恶心。。看注释吧。

【代码】

#include <cstdio>

__int64 s, t, n;

int main()
{
	while (scanf("%I64d%I64d%I64d", &s, &t, &n) != -1)
	{
		__int64 perfect, bad;
		if (n == 1) //如果只有一场比赛。直接进行特判就好。
		{
			if (s > t)
				printf("3 3\n");
			else
				if (s == t)
					printf("1 1\n");
				else
					if (s < t)
						printf("0 0\n");
			continue;
		}
		if ((s + t) == 0) //如果一个球都没进,也一个球都没丢。则全是0:0
		{
			printf("%I64d %I64d\n", n, n);
			continue;
		}
		if (s == 0) //如果一个球都没进
		{
			//最好就是在第一场把t分全部输掉。其余场都是0:0 ,上面s+t==0已结排除一个球都没丢的情况。
			perfect = n-1;
			//最坏的话要分情况。
			if (t >= n) //如果输的球足够每一场都分配一个则得0分
				bad = 0;
			else //否则少于的部分只能是0:0了。即平局。
				bad = n - t;
		}
		else
			if (t == 0)//如果一个球都没丢
			{
				//最好的情况也要分类
				if (s >= n) //如果进的球数足够每一场都分一个
					perfect = 3 * n;//每一场都赢
				else //不够分到每一场
					perfect = (n - s)+3*s;//有些场只能平局了。
				//最坏的情况就是全都在第一场进的。其余场都是平局
				bad = 3 + (n - 1);
			}
			else
				if (s <= t) //如果进球数小于丢球数
				{
					//最好的情况是,第一场把t个球丢掉。然后s足够给剩余n-1场每场分配一个球,即胜n-1场)
					if (s >= n - 1)
						perfect = 3 * (n - 1);
					else //次好则是 s不够分n-1场。则n-1场中有一些平局。
						perfect = 3 * s + (n - 1) - s;
					//接下来考虑最坏的情况。
					if (s == 1 && n >= t) //如果只进了一个球且输球数没有超过n
						bad = 1 + n - t;//把这t个球分配到t场中。这t场除了一场1:1平之外其他场都输,然后另外n-t场为0:0平
					else//注:这里不先考虑t-s>=n是因为如果t小于n,后者是不可能成立的。然后该情况比让对方赢一场的其余都输
						//可能会更差。
						//下面就是按照bad递增来枚举的。
						if (t - s >= n)//如果总输球数大于等于n了。则可以n场每场都至少输1球。
							bad = 0;//即全都可以输
						else
							if (t - s == n - 1)//如果只有n-1场能输,剩下一场只好平了。
								bad = 1;
							else
								if (t - s == n - 2)//如果只有n-2场能输,剩余2场只好平了。
									bad = 2;
								else
									if (t >= n - 1)//如果在第一场把s个球踢进。赢一场。其余n-1场全部输掉。
										bad = 3; //最坏情况为3
									else //如果剩余t个输球不够填满n-1场。则剩余的平局
										bad = 3 + (n - 1) - t;
				}
				else //如果进球数大于丢球数
				{
					if (s - t >= n) //如果每一场都能至少赢一球
						perfect = 3 * n;//这里的perfect也是按照perfect递减来枚举的。
					else
						if (s - t == n - 1) //如果能n-1场都至少赢一球 ,另外一场平局
							perfect = (s - t) * 3 + 1;
						else
							if (s >= n - 1) //如果能第一场输t分,然后其余n-1场每场都至少赢1球。
								perfect = 3 * (n - 1);
							else //如果不够的话n-1场里会有几场是平的。
								perfect = 3 * s + (n - 1) - s;
					//然后是最坏情况。
					//即第一场把s球全部踢进.然后看一下丢球数够不够填满n-1场。
					if (t >= n - 1)
						bad = 3;
					else //不够的话就是平局了。
						bad = 3 + (n - 1) - t;
				}			
		printf("%I64d %I64d\n", perfect, bad);
	}
	return 0;
}


转载于:https://www.cnblogs.com/AWCXV/p/7632306.html

相关文章:

  • js+css实现禁止鼠标右键与选中网页文字
  • [python基础] python 2与python 3之间的区别 —— round
  • 天津杨柳青十八天传销经历
  • Android蓝牙音乐获取歌曲信息
  • 纠正memset函数的用法
  • 在js中实现天数的加减
  • HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。
  • CentOS6.5 yum源设置
  • 九月腾讯,创新工场,淘宝等公司最新面试三十题(第171-200题)
  • Android RxVolley = Volley + RxJava + OkHttp
  • 记忆化递归
  • [SDOI 2009]HH去散步
  • 关于进程内存使用的一点学习和实践
  • java中容器的学习与理解
  • 华为C8650 手机带电脑上网 / 电脑带手机上网
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2017届校招提前批面试回顾
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • emacs初体验
  • jquery cookie
  • Making An Indicator With Pure CSS
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 不上全站https的网站你们就等着被恶心死吧
  • 初识 beanstalkd
  • 翻译--Thinking in React
  • 高度不固定时垂直居中
  • 简单易用的leetcode开发测试工具(npm)
  • 区块链共识机制优缺点对比都是什么
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 我有几个粽子,和一个故事
  • 正则学习笔记
  • #laravel 通过手动安装依赖PHPExcel#
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二)hibernate配置管理
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 分布式技术比较
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net下的富文本编辑器FCKeditor的配置方法
  • @SuppressWarnings注解
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [4.9福建四校联考]
  • [GXYCTF2019]禁止套娃
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx