因为顺序不计,所以先升序排序,然后对于前i个,前缀和一定要>=i*(i-1)/2,否则不满足要求,后面一定会错
然后如果所有的都满足的话,那就是多了,去掉一些就好
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
#define ll long long
int N;
int num[55];
int main()
{
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int T;
scanf("%d", &T);
while (T--)
{
memset(num, 0, sizeof(num));
scanf("%d", &N);
for (int i = 0; i < N; ++i)
scanf("%d", &num[i]);
sort(num, num + N);
int ans = 0;
int sum1 = 0, sum2 = 0;
for (int i = 0; i < N; ++i)
{
sum1 += i; sum2 += num[i];
if (sum2 < sum1)
{
ans += sum1 - sum2;
sum2 = sum1;
}
}
ans += sum2 - sum1;
printf("%d\n", ans);
}
//system("pause");
//while (1);
return 0;
}