题意:
m个小组,每个小组n支队伍进行比赛,任意两支队伍之间有一场比赛
一场比赛里赢得+2分输的+0分,打平的话每队+1分
先给出每支队伍的得分,判断这些得分是否满足小组比赛的条件
思路:
首先总分一定是m*(m-1),然后每x个队伍的分数之和一定不小于x*(x-1)。
得分从小到大排序,对于当前i,与之前的i-1支队伍比赛完之后,所有的比赛的总得分至少是(i-1)*i
每场比赛都产生2分,打了(i-1)*i/2场,也就是i*(i-1)分
最后n场的总分为n*(n-1)
#include<bits/stdc++.h>
using namespace std;
#define LL long long
int a[20005];
int main()
{
int n, x;
while(cin >> n)
{
while(n--)
{
cin>>x;
for(int i=1; i <= x; i++) cin>>a[i];
sort(a+1, a+x+1);
LL sum = 0;bool flag = false;
for(int i=1; i <= x; i++)
{
sum += a[i];
if(sum < i*(i-1))
{
flag = true;
break;
}
}
if(x*(x-1) != sum) flag = true;
if(flag) puts("F");
else puts("T");
}
}
return 0;
}