hdu1421 搬寝室

 1 #include<cstring>
 2 #include<iostream>
 3 #include<algorithm>
 4 #define P(x,y) ((x-y)*(x-y))
 5 using namespace std;
 6 int a[2010],d[2010][2010];
 7 int main()
 8 {
 9     int i,j,n,k;
10     while(cin>>n>>k){
11         for(i=0;i<n;++i)
12             cin>>a[i];
13         sort(a,a+n);
14         memset(d,0,sizeof(d));
15         for(i=1;i<=n;++i)
16             for(j=1;j<=k;++j)
17                 if(i>2*j){
18                     d[i][j]=min(d[i-1][j],d[i-2][j-1]+P(a[i-1],a[i-2]));
19                 }else{
20                     d[i][j]=d[i-2][j-1]+P(a[i-1],a[i-2]);
21                 }
22         cout<<d[n][k]<<endl;
23     }
24     system("pause");
25     return 0;
26 }

刚开始学动态规划,也没想想着用动态规划去借,结果用其他方法折腾了半天还总是WA,最后只能还是动态规划解决!!

原文地址:https://www.cnblogs.com/shihuajie/p/2649063.html