您的位置:首页 > 其它

hdu1421 搬寝室

2012-08-21 14:40 218 查看
#include<cstring>
#include<iostream>
#include<algorithm>
#define P(x,y) ((x-y)*(x-y))
using namespace std;
int a[2010],d[2010][2010];
int main()
{
int i,j,n,k;
while(cin>>n>>k){
for(i=0;i<n;++i)
cin>>a[i];
sort(a,a+n);
memset(d,0,sizeof(d));
for(i=1;i<=n;++i)
for(j=1;j<=k;++j)
if(i>2*j){
d[i][j]=min(d[i-1][j],d[i-2][j-1]+P(a[i-1],a[i-2]));
}else{
d[i][j]=d[i-2][j-1]+P(a[i-1],a[i-2]);
}
cout<<d
[k]<<endl;
}
system("pause");
return 0;
}


刚开始学动态规划,也没想想着用动态规划去借,结果用其他方法折腾了半天还总是WA,最后只能还是动态规划解决!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: