LA 4094 WonderTeam 构造
2015-12-23 13:36
274 查看
题意:
一共有\(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\) |
当\(1 \leq n \leq 3\)时,梦之队只可能是第一名,当\(n=4\)的时候,梦之队最少是第二名。
#include <cstdio> 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; }
相关文章推荐
- 从Eclipse+ADT迁移到Android Studio
- Android 应用程序常用工具类及功能包
- 可以在 Linux 下试试苹果编程语言 Swift
- 安卓开发笔记(二)------------终止一个线程
- Android中多线程下载列表的封装实现(含进度反馈)
- MaterialDesign 之 NavigationView
- bitnami 版 gitlab 修改端口
- eclipse+maven+Hibernate创建JavaWeb项目
- 《转》基于OpenCV的傅里叶变换及逆变换
- labe 高度根据内容的自适应
- linux 下man的用法
- POJ1046 Color Me Less 水题
- jQuery触发<a>标签的点击事件后URL不跳转的解决办法
- Re:李捷_NoSQL数据库之Redis数据库管理五(Redis的常用命令及高级应用)
- RxJava练习(1)--timer代替Handler
- Linux文件编辑器 Vi(Vim)
- 图的理解:深度优先和广度优先遍历及其 Java 实现
- Mongodb
- NuGet学习笔记
- 软件更新随笔