#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int dp[2002][1002] = {0};
int main()
{
int n,k;
while(cin>>n>>k){
int i,j;
int w[2002] = {0};
for(i=0;i<n;++i)cin>>w[i];
sort(w,w+n);
for(i=0;i<=n;i++)
for(j=1;j<=k;j++)
dp[i][j]=0xfffffff;//最少6個F
for(i=2;i<=n;i++)
for(j=1;j<=i/2&&j<=k;j++)
dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(w[i-1]-w[i-2])*(w[i-1]-w[i-2]));
cout<<dp[n][k]<<endl;
}
return 0;
}
115.hdu--1421--搬寢室
注意:dp[i][j]初始化的時候不能小於0xffffff明顯大於2^15但是吧再小就WA了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.