题意:
有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分
题解:
可以知道每打一场分数总和会加2,然后奇数得分的个数是偶数个,0得分的个数最多一个,因为不可能两个队全部都是输,然后就这样xjb水过去了
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 typedef long long ll; 5 6 const int N=1e5+7; 7 8 ll a[N]; 9 10 int main(){ 11 int t,n; 12 while(~scanf("%d",&t)) 13 { 14 while(t--) 15 { 16 scanf("%d",&n); 17 ll sum=0,cnt=0,ze=0,fg=1,all=(ll)n*(n-1); 18 F(i,1,n) 19 { 20 scanf("%lld",a+i); 21 sum+=a[i]; 22 cnt+=a[i]&1; 23 if(a[i]==0)ze++; 24 if(a[i]>2*n-2)fg=0; 25 } 26 if(sum!=all||ze>1||cnt&1)fg=0; 27 if(fg)puts("T");else puts("F"); 28 } 29 } 30 return 0; 31 }