博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LA 4094 WonderTeam 构造
阅读量:5060 次
发布时间:2019-06-12

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

题意:

一共有\(n\)支队伍参加比赛,每两支队伍比赛两场,主客场各一场。

胜场得\(3\)分,平局得1分,败场不得分。
一支得分为\(p\)的队伍的排名\(=\)分数大于\(p\)的队伍数\(+1\),所以会有名词并列的情况。

现在要选出一支梦之队,同时满足下面三个条件:

  • 胜利场数最多,不能并列
  • 进球总数最多,不能并列
  • 丢球总数最少,不能并列

求梦之队可能的最低排名。

分析:

进球数最多和丢球数最少我们是可以合理调整得到的,比如梦之队的胜场是以\(10^9 : 1\)获胜的。

下面考虑,让它胜场最多的情况下得分尽可能地少。
我们可以让梦之队胜两场,然后其余球队每队都赢梦之队一场,其余的比赛都只能平局了。
每支球队都会进行\(2(n-1)\)场比赛,假设梦之队打败的是\(A\)队和\(B\)队:

胜利场数 平局次数 最终得分
梦之队 2 \(n-3\) \(n+3\)
A队 1 \(2n-4\) \(2n-1\)
B队 1 \(2n-4\) \(2n-1\)
其他球队 1 \(2n-3\) \(2n\)

这样,\(n > 4\)的时候,梦之队的排名可以是最后一名。

\(1 \leq n \leq 3\)时,梦之队只可能是第一名,当\(n=4\)的时候,梦之队最少是第二名。

#include 
int main(){ int n; while(scanf("%d", &n) == 1 && n) { if(n <= 3) printf("1\n"); else if(n == 4) printf("2\n"); else printf("%d\n", n); } return 0;}

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/5069687.html

你可能感兴趣的文章
Primary definition
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>
Educational Codeforces Round 46 (Rated for Div. 2)
查看>>