/*
2014.3.6
这题说的是给你了一根木棒 然后 n 个点(线段上的点)
然后计算 在这 n个点上都切下去的 最小花费
举个例子
100
3
25 50 75
如果 从 25 开始切 然后切 50 75 则花费是 100 + 75 +50= 225
如果 从 50 开始切 然后切 25 75 则花费 100 +50 +50 =200
相对 更优一些
解题: 可以发现 当 从某个点坐标为 D 切下去后则从0到D的 部分和从 D到 I 的 部分就没有了关系
因此 得到状态转移的 公式
dp[i][j]=min(dp[i][k]+dp[k][j]);
得解
*/ #include<cstdio>
#include<string.h>
#include<iostream>
using namespace std;
int dp[100][100];
int W[100];
int main()
{
int N,i,j;
W[0]=0;
while(scanf("%d",&N)==1&&N!=0){
int t; scanf("%d",&t);W[t+1]=N;
for( i=1;i<=t;i++)
{
scanf("%d",&W[i]);
dp[i-1][i]=W[i]-W[i-1];
}
t++;
dp[t-1][t]=W[t]-W[t-1];
for(i=0;i+2<=t;i++)
dp[i][i+2]=dp[i][i+1]+dp[i+1][i+2];
for(i=0;i+1<=t;i++) dp[i][i+1]=0; for(int k=3;k<=t;k++) for(i=0;i+k<=t;i++)
{
int c=i+k; dp[i][i+k]=10000000; for(int j=i+1;j<c;j++) if(dp[i][c]>(dp[i][j]+dp[j][c]+W[c]-W[i])){ dp[i][c]=dp[i][j]+dp[j][c]+W[c]-W[i];
} } printf("The minimum cutting is %d.\n",dp[0][t]);
} return 0;
}

uva10003的更多相关文章

  1. uva10003 - Cutting Sticks(简单动规)

    /* * Author: Bingo * Created Time: 2015/2/13 18:33:03 * File Name: uva10003.cpp */ #include <iost ...

  2. UVA-10003 Cutting Sticks 动态规划 找分界点k的动规

    题目链接:https://cn.vjudge.net/problem/UVA-10003 题意 有根棍子,上面有些分割点(n<50),每次按分割点切割棍子时,费用为当前棍子的长度. 问有什么样的 ...

  3. uva10003 Cutting Sticks

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  4. uva10003 区间DP

    很清晰的区间dp问题.d(i,j)表示断点i到断点j的最小费用,由于开头和结尾也是断点,所以应该加入断点数组,即 cut[0]=0; cut[n+1]=len; 边界就是d(i,i+1)=0; 转移方 ...

  5. Uva 437 巴比伦塔 && UVA10003

    要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用 用结构体记录一块石头的三种放置情况,按面积排序. dp[i] = max(dp[i],dp[j] + block[i].high ...

  6. UVA10003 【Cutting Sticks】

    [分析] 设d(i,j)为切割小木棍i-j的最优费用,则d(i,j)=min{d(i,k)+d(k,j)|i<k<j}+a[j]-a[i],其 中最后一项a[j]-a[i]代表第一刀的费用 ...

  7. UVa 10003 切木棍(区间DP+最优矩阵链乘)

    https://vjudge.net/problem/UVA-10003 题意: 有一根长度为L的棍子,还有n个切割点的位置.你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小.每 ...

  8. 简单Dp----最长公共子序列,DAG最长路,简单区间DP等

    /* uva 111 * 题意: * 顺序有变化的最长公共子序列: * 模板: */ #include<iostream> #include<cstdio> #include& ...

  9. [总结-动态规划]经典DP状态设定和转移方程

    马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...

随机推荐

  1. 在 NHibernate 中一切必须是 Virtual 的吗?

    原文地址:Must Everything Be Virtual With NHibernate? 老赵在博文中 我对NHibernate的感受(2):何必到处都virtual 提到这篇文章,顺便翻译一 ...

  2. iOS - 友盟集成QQ分享的AppID转换16进制的方法

    设置xcode的url scheme格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ41EE2B54”.生成十六进制方法:echo 'ibase=10;obas ...

  3. mvc 实现超时弹窗后跳转

    为了实现保持登录状态,可以用cookie来解决这一问题 假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAtt ...

  4. jquery 设置style:display 其实很方便的哦

    ("#id").css('display','none'); $("#id").css('display','block'); 或 $("#id&qu ...

  5. intel笔记本cpu型号后缀详解(M,U,QM,MQ,HQ,XM)

    M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器. U:笔记本专用低电压CPU,一般为双核,U前面一位数字为8,则是28W功耗的低压处理器(标准 ...

  6. Windows hackson (rundll32--ADS)

    http://www.tuicool.com/articles/AnuqA3 http://www.2cto.com/Article/201507/424713.html http://drops.w ...

  7. 设置elasticsearch一次最大数量查询

    PUT my_index/_settings?preserve_existing=true{ "max_result_window": "2000000000" ...

  8. NYOJ 587 blockhouses 【DFS】

    blockhouses 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 Suppose that we have a square city with straigh ...

  9. 001-将自己的jar提交maven中央仓

    一.Maven中央仓库提交过程 ① https://issues.sonatype.org 工单管理地址,就是申请上传资格和groupId 的地方. ② https://oss.sonatype.or ...

  10. go for cryptocurrency

    https://blog.conformal.com/category/btcd/ https://github.com/btcsuite/btcd/tree/master/docs https:// ...