题意 : 给你m个球队的得分问你是否合法;
题解 : 这个题就是自己在纸上画画,然后你就可以发现处理和 不等于 n * (n - 1) 或者 每一次的值有的超过该超过的最大值就不合法。然后就是模拟了。
#include <algorithm>
#include <cstring>
#include <cstdio>
#define ll long long
using namespace std;
const int maxn = 1e7 + 10;
ll a[maxn] = {0};
ll b[maxn] = {0};
int main () {
ll t;
while (scanf ("%I64d",&t) != EOF) {
while (t --) {
int flag = 1;
ll sum = 0;
ll n;
scanf ("%I64d",&n);
for (int i = 1;i <= n; ++ i) {
scanf ("%I64d",&a[i]);
b[i] = 2 * (i - 1);
sum += a[i];
}
if (sum != n * (n - 1)) {
flag = 0;
printf ("F\n");
continue;
}
ll res = 0;
sort (a + 1,a + n + 1);
for (ll i = n;i >= 1; -- i) {
res += (b[i] - a[i]);
if (res < 0) {flag = 0; break;}
}
if (res != 0) flag = 0;
if (flag) printf ("T\n");
else printf ("F\n");
}
}
return 0;
}