Football Games(思维题)
At the first phase of
the championships, teams are divided into M
groups using the single round robin rule where one and only one game will be
played between each pair of teams within each group. The winner of a game scores
2 points, the loser scores 0, when the game is tied both score 1 point. The
schedule of these games are unknown, only the scores of each team in each group
are available.
When those games finished, some insider revealed that
there were some false scores in some groups. This has aroused great concern
among the pubic, so the the Association of Credit Management (ACM) asks you to
judge which groups' scores must be false.
input.
For each case, the first line contains a positive integers
M
, which is the number of groups.
The i
-th of the next M
lines begins with a positive integer Bi
representing the number of teams in the i
-th group, followed by Bi
nonnegative integers representing the score of each team in this
group.
number of test cases <= 10
M<= 100
B[i]<=
20000
score of each team <= 20000
lines. Output ``F" (without quotes) if the scores in the i-th group must be
false, output ``T" (without quotes) otherwise. See samples for detail.
3 0 5 1
2 1 1
T
题意:
m个小组,每个小组n支队伍进行比赛,任意两支队伍之间有一场比赛
一场比赛里赢得+2分输的+0分,打平的话每队+1分
先给出每支队伍的得分,判断这些得分是否满足小组比赛的条件
思路:根据这个比赛规则,我们可以发现,每场比赛都有2个积分会出去。
那么问题就很好解决了,先要给那些
得分从小到大排序,对于当前i,与之前的i-1支队伍比赛完之后,所有的比赛的总得分至少是(i-1)*i(因为这i只队伍还要和第i+1~n的队伍打比赛,也可能获得分数
#include<bits/stdc++.h>
using namespace std;
const int maxn = +;
int n,a[maxn];
int main()
{
int T;
while(scanf("%d",&T)!=EOF)
{
while(T--)
{
int res = ;
scanf("%d",&n);
for(int i = ;i<=n;i++)
scanf("%d",&a[i]),res+=a[i];
sort(a+,a++n);
int sum = ;
int flag = ;
for(int i = ;i<=n;i++)
{
sum+=a[i];
if(sum<i*(i-))
{
flag=;
break;
}
}
if(res!=n*(n-))
flag=;
if(flag)
printf("F\n");
else
printf("T\n");
}
}
}
);
最后只要算出比赛的场次*2==总分就可以。
一共有n组,那么任意两只队伍要比赛的话排列组合共有Cn^2种情况,即n*(n-1)/2;
最新文章
- 事务日志已满,原因为“ACTIVE_TRANSACTION”
- liToSpan
- javase基础复习攻略《三》
- java汉化
- npm install -g 全局安装总是出现permission权限问题的解决方案
- java提高篇---HashSet
- C语言基础--switch
- Mes首检确认统计的存储过程
- HTML+CSS学习笔记 (15) - css样式设置小技巧
- Delphi通过IE窗口句柄获取网页接口(IWebBrowser2) good
- 基于visual Studio2013解决C语言竞赛题之0411公约数和公倍数
- CentOS7 emacs安装
- 简单了解Hibernate
- MySQL事务隔离级别的实现原理
- ●BZOJ 2752 [HAOI2012]高速公路(road)
- Android图表库MPAndroidChart(一)——了解他的本质,方能得心应手
- 你所不知道的 CSS 阴影技巧与细节
- echarts 折线图点击高亮
- testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件
- EasyRadius 动态域名DDNS设置工具,支持WayOS三代,完美解决近段时间3322和每步不稳定问题
热门文章
- ios断点续传:NSURLSession和NSURLSessionDataTask实现
- 【HDOJ 1272】小希的迷宫(并查集+无环图)
- JAVA | 学生选课系统
- Ansible自动化配置详解
- kali linux 安装谷歌浏览器
- sql server,mysql,oracle平时用法的区别
- 【Commare中关于理论范畴和技术常用的技术术语】
- Java小功能大杂烩
- Nodejs 使用 addons 调用c++ 初体验(一)
- Hive(2)-Hive的安装,使用Mysql替换derby,以及一丢丢基本的HQL