#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int M=20010;
int a[M];
int main()
{
int t;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
int m;
cin>>m;
long long sum[M];
memset(sum,0,sizeof(sum));
for(int i=1;i<=m;i++)
{
cin>>a[i];
}
sort(a+1,a+m+1);//任意i个人得分之和为i*(i-1) 最小的i个人满足其他自然满足
int flag=1;
for(int i=1;i<=m;i++)
{
if(i==1)
sum[i]=a[i];
else
sum[i]=sum[i-1]+a[i];
if(i>=2&&sum[i]<i*(i-1)) // 1<=i<=m-1 则i个人的得分至少为 i*(i-1) 因为:i个人还要和i之后的比赛
{
flag=0;
break;
}
}
if(sum[m]!=m*(m-1)) //每场比赛两人得分之和为2 总共C(m,2)=(m*(m-1))/2场比赛 所以i个人比赛得分为 i*(i-1)
{
flag=0;
}
if(!flag)
{
cout<<"F";
}
else
cout<<"T";
cout<<endl;
}
}
return 0;
}
hdu 5873 Football Games(思维题)
最新推荐文章于 2018-04-02 16:31:00 发布