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 }

 

你可能感兴趣的:(HDU)