码迷,mamicode.com
首页 > 其他好文 > 详细

poj1160 dp

时间:2014-08-14 16:30:59      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   ar   

bubuko.com,布布扣
 1 //Accepted    564 KB    63 ms
 2 //和hdu1227一样
 3 //dp[i][j]=min(dp[i][j],dp[k][j-1]+cost[k+1][i])
 4 //初始化条件,dp[0][0]=0;
 5 //dp[i][0]=inf;i>=1;
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <iostream>
 9 using namespace std;
10 const int imax_n =305;
11 const int imax_P = 35;
12 const int inf = 100000000;
13 int cost[imax_n][imax_n];
14 int dp[imax_n][imax_P];
15 int dis[imax_n];
16 int n,P;
17 int tabs(int x)
18 {
19     if (x<0) x=-x;
20     return x;
21 }
22 int min(int a,int b)
23 {
24     return a<b?a:b;
25 }
26 void getCost()
27 {
28     for (int i=1;i<=n;i++)
29     {
30         for (int j=i;j<=n;j++)
31         {
32             cost[i][j]=0;
33             int temp=(i+j)/2;
34             for (int k=i;k<=j;k++)
35             cost[i][j]+=tabs(dis[k]-dis[temp]);
36         }
37     }
38 }
39 void Dp()
40 {
41     getCost();
42     for (int i=0;i<=n;i++)
43     for (int j=0;j<=P;j++)
44     dp[i][j]=inf;
45     dp[0][0]=0;
46     for (int i=1;i<=n;i++)
47     {
48         for (int j=1;j<=P && j<=i;j++)
49         {
50             for (int k=j-1;k<i;k++)
51             {
52                 dp[i][j]=min(dp[i][j],dp[k][j-1]+cost[k+1][i]);
53             }
54         }
55     }
56     printf("%d\n",dp[n][P]);
57 }
58 int main()
59 {
60     while (scanf("%d%d",&n,&P)!=EOF)
61     {
62         for (int i=1;i<=n;i++)
63         scanf("%d",&dis[i]);
64         Dp();
65     }
66     return 0;
67 }
View Code
bubuko.com,布布扣
 1 //Accepted    564 KB    79 ms
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 using namespace std;
 6 const int imax_n =305;
 7 const int imax_P = 35;
 8 const int inf = 100000000;
 9 int cost[imax_n][imax_n];
10 int dp[imax_n][imax_P];
11 int dis[imax_n];
12 int n,P;
13 int tabs(int x)
14 {
15     if (x<0) x=-x;
16     return x;
17 }
18 int min(int a,int b)
19 {
20     return a<b?a:b;
21 }
22 void getCost()
23 {
24     for (int i=1;i<=n;i++)
25     {
26         for (int j=i;j<=n;j++)
27         {
28             cost[i][j]=0;
29             int temp=(i+j)/2;
30             for (int k=i;k<=j;k++)
31             cost[i][j]+=tabs(dis[k]-dis[temp]);
32         }
33     }
34 }
35 void Dp()
36 {
37     getCost();
38     for (int i=0;i<=n;i++)
39     dp[i][0]=inf;
40     dp[0][0]=0;
41     for (int i=1;i<=n;i++)
42     {
43         for (int j=1;j<=P && j<=i;j++)
44         {
45             dp[i][j]=inf;
46             for (int k=j-1;k<i;k++)
47             {
48                 dp[i][j]=min(dp[i][j],dp[k][j-1]+cost[k+1][i]);
49             }
50         }
51     }
52     printf("%d\n",dp[n][P]);
53 }
54 int main()
55 {
56     while (scanf("%d%d",&n,&P)!=EOF)
57     {
58         for (int i=1;i<=n;i++)
59         scanf("%d",&dis[i]);
60         Dp();
61     }
62     return 0;
63 }
View Code

 

poj1160 dp,布布扣,bubuko.com

poj1160 dp

标签:style   blog   http   color   os   io   for   ar   

原文地址:http://www.cnblogs.com/djingjing/p/3912564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!