HDU

来源:互联网 发布:大数据时代财务转型 编辑:程序博客网 时间:2024/06/08 00:29

题意: 有n支队伍,他们两两互相比赛一场,赢一场得两分,输一场得0分,平一场 得各得一分。

思路 : 这题数据水的一p,,,随便水水都能过。。首先,比赛一场总分是两分,所以总分一定是 n*(n-1),之后 最高分不能超过 2*(n-1)因为有且只有一个队伍每场都赢,所以最高分不可能超过,然后 ,,然后就水过去了,,这个思路是肯定是尼玛错的啊,,,比如说  0 0 6 6 ,就可以。。

说一下正确得思路吧:这个东西叫做Landau's Theorem 竞赛图兰道定理 ,具体分析在http://blog.csdn.net/a_crazy_czy/article/details/73611366

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;const int maxn=20000+5;int n;int a[maxn];int main(){    //freopen("in.txt","r",stdin);    int T;    while(~scanf("%d",&T))    {        while(T--)        {            bool flag=true;            scanf("%d",&n);            for(int i=1;i<=n;i++) scanf("%d",&a[i]);            sort(a+1,a+n+1);            int sum=0;            for(int i=1;i<=n;i++)            {                sum+=a[i];                if(i<n)                {                    if(sum<i*(i-1))  {flag=false;break;}                }                else                {                    if(sum!=i*(i-1))  flag=false;                }            }            if(flag)  puts("T");            else puts("F");        }    }    return 0;}


原创粉丝点击