CodeForces - 1437C(dp)
90nwyn
2020-11-21 20:42:50
[题目链接](https://vjudge.net/problem/CodeForces-1437C)
------------
考虑到取出所有菜品的顺序一定与他们完成的时间先后顺序相同,设 $f[i][j]$ 表示到了时刻 $i$ 取出了前 $j$ 个菜品
------------
```cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=2e2+5,inf=0x3f3f3f3f;
int n,a[M],dp[M];
int main()
{
int Q;scanf("%d",&Q);
while(Q--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+1+n);
dp[0]=0;
for(int j=1;j<=n;j++)dp[j]=inf;
for(int i=1;i<=2*n;i++)
for(int j=n;j>=1;j--)
dp[j]=min(dp[j],dp[j-1]+abs(a[j]-i));
printf("%d\n",dp[n]);
}
return 0;
}
```