hdu1421搬寝室(dp)

http://acm.hdu.edu.cn/showproblem.php?pid=1421

2A 之前在实验室写的时候排好了序 没打完 回来重打的时候忘记了排序。。

View Code
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<string.h>
 4 #include<algorithm>
 5 #define INF 0xffffff
 6 using namespace std;
 7 int w[2011];
 8 __int64 dp[2011][1011];
 9 int main()
10 {
11     int i,j,k,n,m;
12     while(scanf("%d%d",&n,&k)!=EOF)
13     {
14         for(i = 1; i <= n ; i++)
15         scanf("%d",&w[i]);
16         sort(w+1,w+n+1);
17         for(i = 0; i <= n ; i++)
18         dp[i][0] = 0;
19         for(i = 1; i <= n ; i++)
20         {
21             for(j = 1 ; j <= i/2 ; j++)
22             {
23                 if(j==i/2&&i%2==0)
24                 dp[i][j] = dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]);
25                 else
26                 dp[i][j] = min(dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]),dp[i-1][j]);
27             }
28         }
29         printf("%I64d\n",dp[n][k]);
30     }
31     return 0;
32 }

 

posted @ 2012-09-07 11:07  _雨  阅读(160)  评论(0编辑  收藏  举报