题意:


思路:



%E8%A1%A8%E7%A4%BA%E7%AC%ACi%E5%A4%A9%E5%B7%B2%E7%BB%8F%E4%B9%B0%E4%BA%86j%E9%A2%97%E7%B3%96%E7%9A%84%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9&preview=true)
%20%3D%20f(i-1%2Cj-k)%20%2B%20sum%5Bk%5D%20%2B%20k%5E2%2Ck%E6%98%AF%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E5%8F%96%E7%9A%84%E5%80%BC%EF%BC%8C%E5%BA%94%E8%AF%A5%E6%98%AF%5B0%2Cmin(m%2Cj)%5D&preview=true)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 305;
int f[N][N];
int n,m,sum[N][N],a[N][N];
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
scanf("%d",&a[i][j]);
}
sort(a[i] + 1,a[i] + 1 + m);
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
sum[i][j] = sum[i][j-1] + a[i][j];
}
}
memset(f,0x3f,sizeof(f));
f[0][0] = 0;
for(int i = 1;i <= n;i++){
for(int j = i;j <= min(n,i*m);j++){
for(int k = 0;k <= min(m,j);k++){
f[i][j] = min(f[i][j],f[i-1][j-k] + sum[i][k] + k*k);
}
}
}
printf("%d\n",f[n][n]);
return 0;
}