//Accepted    564 KB    63 ms
 //和hdu1227一样
 //dp[i][j]=min(dp[i][j],dp[k][j-1]+cost[k+1][i])
 //初始化条件,dp[0][0]=0;
 //dp[i][0]=inf;i>=1;
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 ;
 ;
 int cost[imax_n][imax_n];
 int dp[imax_n][imax_P];
 int dis[imax_n];
 int n,P;
 int tabs(int x)
 {
     ) x=-x;
     return x;
 }
 int min(int a,int b)
 {
     return a<b?a:b;
 }
 void getCost()
 {
     ;i<=n;i++)
     {
         for (int j=i;j<=n;j++)
         {
             cost[i][j]=;
             ;
             for (int k=i;k<=j;k++)
             cost[i][j]+=tabs(dis[k]-dis[temp]);
         }
     }
 }
 void Dp()
 {
     getCost();
     ;i<=n;i++)
     ;j<=P;j++)
     dp[i][j]=inf;
     dp[][]=;
     ;i<=n;i++)
     {
         ;j<=P && j<=i;j++)
         {
             ;k<i;k++)
             {
                 dp[i][j]=min(dp[i][j],dp[k][j-]+cost[k+][i]);
             }
         }
     }
     printf("%d\n",dp[n][P]);
 }
 int main()
 {
     while (scanf("%d%d",&n,&P)!=EOF)
     {
         ;i<=n;i++)
         scanf("%d",&dis[i]);
         Dp();
     }
     ;
 }
 //Accepted    564 KB    79 ms
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 ;
 ;
 int cost[imax_n][imax_n];
 int dp[imax_n][imax_P];
 int dis[imax_n];
 int n,P;
 int tabs(int x)
 {
     ) x=-x;
     return x;
 }
 int min(int a,int b)
 {
     return a<b?a:b;
 }
 void getCost()
 {
     ;i<=n;i++)
     {
         for (int j=i;j<=n;j++)
         {
             cost[i][j]=;
             ;
             for (int k=i;k<=j;k++)
             cost[i][j]+=tabs(dis[k]-dis[temp]);
         }
     }
 }
 void Dp()
 {
     getCost();
     ;i<=n;i++)
     dp[i][]=inf;
     dp[][]=;
     ;i<=n;i++)
     {
         ;j<=P && j<=i;j++)
         {
             dp[i][j]=inf;
             ;k<i;k++)
             {
                 dp[i][j]=min(dp[i][j],dp[k][j-]+cost[k+][i]);
             }
         }
     }
     printf("%d\n",dp[n][P]);
 }
 int main()
 {
     while (scanf("%d%d",&n,&P)!=EOF)
     {
         ;i<=n;i++)
         scanf("%d",&dis[i]);
         Dp();
     }
     ;
 }

poj1160 dp的更多相关文章

  1. 区间DP POJ1160村庄邮局问题

    POJ1160 题目大意:一系列村庄在一维坐标系上有序的排列,建设p个邮局,问各个村庄到邮局的最短距离和. 线性区间DP问题 dp数组的值为最短/最优距离 村庄和邮局为限制 dp[i][j]表示前i个 ...

  2. POJ1160 Post Office[序列DP]

    Post Office Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18680   Accepted: 10075 Des ...

  3. 石子合并(四边形不等式优化dp) POJ1160

    该来的总是要来的———————— 经典问题,石子合并. 对于 f[i][j]= min{f[i][k]+f[k+1][j]+w[i][j]} From 黑书 凸四边形不等式:w[a][c]+w[b][ ...

  4. POJ-1160 Post Office (DP+四边形不等式优化)

    题目大意:有v个村庄成直线排列,要建设p个邮局,为了使每一个村庄到离它最近的邮局的距离之和最小,应该怎样分配邮局的建设,输出最小距离和. 题目分析:定义状态dp(i,j)表示建设 i 个邮局最远覆盖到 ...

  5. POJ1160 Post Office (四边形不等式优化DP)

    There is a straight highway with villages alongside the highway. The highway is represented as an in ...

  6. [POJ1160] Post Office [四边形不等式dp]

    题面: 传送门 思路: dp方程实际上很好想 设$dp\left[i\right]\left[j\right]$表示前$j$个镇子设立$i$个邮局的最小花费 然后状态转移: $dp\left[i\ri ...

  7. POJ1160 Post Office-四边形不等式优化DP

    方程 $\Large f(i,j)=min(f(i-1,k)+w(k+1,j))$ 其中$w(i,j)$表示在$[i,j]$的村庄都去一个邮局的最小距离和 证明w满足四边形不等式 设$w_k(i,j) ...

  8. 【poj1160】 Post Office

    http://poj.org/problem?id=1160 (题目链接) 题意 按照递增顺序给出一条直线上坐标互不相同的n个村庄,要求从中选择p个村庄建立邮局,每个村庄使用离它最近的那个邮局,使得所 ...

  9. DP总结 ——QPH

    常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一 ...

随机推荐

  1. Web打印使用printThis.js

    <script src="~/Content/JQueryTools/printThis/printThis.js"></script>

  2. 如何在大量jar包中搜索特定字符

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  3. http协议分析工具【转】

    转自:http://www.cnblogs.com/klguang/p/4624333.html

  4. win8 卸载IIS

    C:\Windows\System32\inetsrv C:\Windows\iis7.log C:\inetpub

  5. 意外的节点类型 Element。只能在简单内容或空内容上调用 ReadElementString 方法

    问题出现的情景: 在调用携程团购接口时,需要把获取的xml字符串反序列化实体对象,出现了这个错误. 详情: 在对xml文档有这样一条语句“ <Description Category=" ...

  6. Q: How could I use MATLAB interface for parameter selection?

    Q: How could I use MATLAB interface for parameter selection? One can do this by a simple loop. See t ...

  7. MATLAB 随机生成互不重叠的多个矩形

    建立m文件draw_rectangle.m. 其中p生成矩形的个数 function draw_rectangle(p) t = 1; x = rand(1)*10; y = rand(1)*10; ...

  8. chrome 模拟点击

    实现进入一个页面后触发一个<a>的点击事件. 由于safari和chrome不支持<a>的click()所以需要对浏览器进行判断 var Sys = {};   var ua ...

  9. Oracle知识整理

    1.自带三种登录方式: Scott/tiger   sys/manager   system/manager 2.基本的操作 1)  建数据库 create tablespace 表空间的名称 dat ...

  10. group_concat函数与find_in_set()函数相结合

    一:group_concat函数详解 1.语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'] ...