uva10003
/*
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的更多相关文章
- uva10003 - Cutting Sticks(简单动规)
/* * Author: Bingo * Created Time: 2015/2/13 18:33:03 * File Name: uva10003.cpp */ #include <iost ...
- UVA-10003 Cutting Sticks 动态规划 找分界点k的动规
题目链接:https://cn.vjudge.net/problem/UVA-10003 题意 有根棍子,上面有些分割点(n<50),每次按分割点切割棍子时,费用为当前棍子的长度. 问有什么样的 ...
- uva10003 Cutting Sticks
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- uva10003 区间DP
很清晰的区间dp问题.d(i,j)表示断点i到断点j的最小费用,由于开头和结尾也是断点,所以应该加入断点数组,即 cut[0]=0; cut[n+1]=len; 边界就是d(i,i+1)=0; 转移方 ...
- Uva 437 巴比伦塔 && UVA10003
要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用 用结构体记录一块石头的三种放置情况,按面积排序. dp[i] = max(dp[i],dp[j] + block[i].high ...
- 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]代表第一刀的费用 ...
- UVa 10003 切木棍(区间DP+最优矩阵链乘)
https://vjudge.net/problem/UVA-10003 题意: 有一根长度为L的棍子,还有n个切割点的位置.你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小.每 ...
- 简单Dp----最长公共子序列,DAG最长路,简单区间DP等
/* uva 111 * 题意: * 顺序有变化的最长公共子序列: * 模板: */ #include<iostream> #include<cstdio> #include& ...
- [总结-动态规划]经典DP状态设定和转移方程
马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...
随机推荐
- linux系统下邮件的发送
在linux系统下发送邮件一般都要要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用. 其实我还可以安装mailx软件,通过修改配置文件可以使用外部SMTP服务 ...
- 如何搭建Packetbeat性能监控
安装与配置JDK 1. 将jdk-8u111-linux-x64.tar.gz上传至Linux的/opt目录下,并执行解压命令: tar -zxvf jdk-8u111-linux-x64.tar. ...
- Mybatis generator使用小记
Mybatis generator可以使用命令行,eclipse插件和maven配置实现自动生成代码的功能,主要来看看使用eclipse插件生成代码方法. 先安装插件: maven加载mysql驱动: ...
- python 读取一个目录下的所有目录和文件
#!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global ...
- logstash实战tcp插件
vim /etc/logstash/conf.d/tcp.conf input{ tcp{ type => "tcp" port => "6666" ...
- HDU-4539郑厂长系列故事——排兵布阵(状态压缩,动态规划)
郑厂长系列故事--排兵布阵 Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...
- Python实现KNN算法及手写程序识别
1.Python实现KNN算法 输入:inX:与现有数据集(1xN)进行比较的向量 dataSet:已知向量的大小m数据集(NxM) 个标签:数据集标签(1xM矢量) k:用于比较的邻居数 ...
- python调用exe程序
最近在做测试,公司的产品做成了exe,让我去测试,C++写的程序啊,我直接用python调用那个exe,也有个坑,必须要到exe在的那个目录下,然后才能调用: import os def main() ...
- linker command failed with exit code 1 (use -v to see invocation) 变量重名
有时候,xcode报错看不到,点最后一个按钮,类似气泡的就能看到 报错信息: duplicate symbol _imgNummmm in: /Users/mianmian/Library/De ...
- js 通过html()及text()方法获取并设置p标签的显示值
html()方法 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容.要获取某个元素的内容,可以这样: 复制代码 代码如下: var p_html ...