码迷,mamicode.com
首页 > 其他好文 > 详细

2016 ACM/ICPC Asia Regional Dalian Online

时间:2016-09-11 18:29:44      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 

1006  Football Games

这道题输入也很阴险!!!

这道题过题姿势最优雅的,不是if else if else if。那样很容易wa的。

如果没有平手选项, 赢得加一分的话, 可以用Landau‘s Theorem兰道定理判定。 稍微修改一下这个定理就能做了。

假设S1,S2……Sn是他们的得分序列,从小到排个序。那么这个序列要是合法。那么当且仅当

  • S1+S2+……+Sn = n(n-1)
  • S1+S2+……+Si >= i(i-1)  ( 1 <= i < n)

其实第二条也可以理解成,第i大的得分,不可能多于2(i-1),因为你最多把剩下的队伍全部赢一边。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 const int maxn = 20000 + 5;
 5 int T, n;
 6 int a[maxn];
 7 void solve()
 8 {
 9     scanf("%d", &n);
10     for(int i = 1; i <= n; i++)
11     {
12         scanf("%d", &a[i]);
13     }
14     sort(a + 1, a + n + 1);
15     int sum = 0;
16 
17     for(int i = 1; i <= n; i++)
18     {
19         sum = sum + a[i];
20         if(sum < i * (i - 1))
21         {
22             printf("F\n");
23             return ;
24         }
25     }
26     if(sum != n * (n - 1))
27         printf("F\n");
28     else
29         printf("T\n");
30 }
31 int main()
32 {
33     while(~scanf("%d", &T))
34     {
35         while(T--)
36         {
37             solve();
38         }
39     }
40     return 0;
41 }

 

2016 ACM/ICPC Asia Regional Dalian Online

标签:

原文地址:http://www.cnblogs.com/luosuo10/p/5862123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!