博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu - 4974 - A simple water problem(贪心 + 反证)
阅读量:7182 次
发布时间:2019-06-29

本文共 1198 字,大约阅读时间需要 3 分钟。

题意:N个队(N <= 100000),每一个队有个总分ai(ai <= 1000000),每场比赛比赛两方最多各可获得1分,问最少经过了多少场比赛。

题目链接:

——>>我们应该尽量使每场比赛的得分为1 : 1,这样能够达到最少的比赛场数(不小于单个队伍的分数)。

如果有2场比赛的比分为1 : 0,

1)a : b = 1 : 0,c : d = 1 : 0。这时能够安排a : c = 1 : 1,仅仅需1场就可达到同样的分数。

2)a : b = 1 : 0。a : c = 1 : 0,取另外一场比赛d : e = 1 : 1,这时可安排a : d = 1 : 1,a : e = 1 : 1,仅仅需2场就可达到同样的分数。

因此,没有最多有1场比赛的比分为 1 : 0。其它比赛的比分都为 1 : 1,因此。结果 = max(单个队伍最高分数, (全部分数和 + 1) / 2)。。

。(注意范围:10 ^ 5 * 10 ^ 6 > 2 ^ 31 - 1)

virtual contest上提交必须开输入挂才不会TLE。

大哭

hdu题库4974中 scanf 就能够AC。

#include 
int ReadInt(){ int ret = 0; char ch; while ((ch = getchar()) && ch >= '0' && ch <= '9') { ret = ret * 10 + ch - '0'; } return ret;}int main(){ int T, N, a, kase = 0; scanf("%d", &T); getchar(); while (T--) { long long sum = 0; long long ret = 0; N = ReadInt(); while (N--) { a = ReadInt(); sum += a; if (a > ret) { ret = a; } } if (sum & 1) { sum++; } sum >>= 1; if (sum > ret) { ret = sum; } printf("Case #%d: %I64d\n", ++kase, ret); } return 0;}

你可能感兴趣的文章
统计一串字符串中连续相同元素的个数
查看>>
奋斗例子——>从1.5k到18k, 一个程序员的5年成长之路
查看>>
python2.x之list和tunple及dict
查看>>
后缀表达式太有才了
查看>>
Atom Plugins
查看>>
1.8 字典 1.9 字典练习 2.0/2.1 流程控制-if条件判断
查看>>
软件包安装
查看>>
CentOS6下配置Tomcat7以非root用户在80端口自启动(JSVC)
查看>>
elasticsearch5.0.0中聚合和脚本的变化
查看>>
修改 Docker 中 MySQL 容器的编码
查看>>
HeadFirst设计模式篇七:模板方法模式
查看>>
给自己的区块链添加POW-工作量证明
查看>>
unix ‘’ “” 等笔记
查看>>
子域名间 的session共享
查看>>
webpack使用的一些看法
查看>>
大数据学习系列----文章汇总
查看>>
ios开发:使用sqlite存储数据
查看>>
C++ map下标访问的问题
查看>>
go filepath Abs
查看>>
透视JVM之垃圾回收
查看>>