UVA-10003 Cutting Sticks 动态规划 找分界点k的动规
题目链接:https://cn.vjudge.net/problem/UVA-10003
题意
有根棍子,上面有些分割点(n<50),每次按分割点切割棍子时,费用为当前棍子的长度。
问有什么样的顺序,使总费用最小。
思路
简单题,设dp[i][j]为在分割点ij之间棍子的最小切割费用。
有转移方程dp[i][j]=min( dp[i][k]+dp[k][j] )+pos[j]-pos[i]
注意边界条件dp[i][i+1]=0意思是i~i+1之间不需要切割费用。
提交过程
| WA | 边界条件给错 |
| WA | 输出错 |
| AC |
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=50+20, INF=0x3f3f3f3f;
int n, l;
int pos[maxn], data[maxn][maxn];
int dp(int l, int r){
if (r<=l+1) return 0;
if (data[l][r]) return data[l][r];
data[l][r]=INF;
for (int k=l+1; k<r; k++)
data[l][r]=min(data[l][r], dp(l, k)+dp(k, r));
return data[l][r]+=pos[r]-pos[l];
}
int main(void){
while (scanf("%d", &l)==1 && l){
memset(data, 0, sizeof(data));
scanf("%d", &n);
pos[0]=0; pos[n+1]=l;
for (int i=1; i<=n; i++)
scanf("%d", &pos[i]);
printf("The minimum cutting is %d.\n", dp(0, n+1));
}
return 0;
}
| Time | Memory | Length | Lang | Submitted |
|---|---|---|---|---|
| 150ms | 691 | C++ 5.3.0 | 2018-08-06 09:13:55 |
UVA-10003 Cutting Sticks 动态规划 找分界点k的动规的更多相关文章
- UVA 10003 Cutting Sticks 区间DP+记忆化搜索
UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...
- uva 10003 Cutting Sticks 【区间dp】
题目:uva 10003 Cutting Sticks 题意:给出一根长度 l 的木棍,要截断从某些点,然后截断的花费是当前木棍的长度,求总的最小花费? 分析:典型的区间dp,事实上和石子归并是一样的 ...
- uva 10003 Cutting Sticks(区间DP)
题目连接:10003 - Cutting Sticks 题目大意:给出一个长l的木棍, 再给出n个要求切割的点,每次切割的代价是当前木棍的长度, 现在要求输出最小代价. 解题思路:区间DP, 每次查找 ...
- UVA 10003 Cutting Sticks(区间dp)
Description Cutting Sticks You have to cut a wood stick into pieces. The most affordable company ...
- UVA 10003 Cutting Sticks
题意:在给出的n个结点处切断木棍,并且在切断木棍时木棍有多长就花费多长的代价,将所有结点切断,并且使代价最小. 思路:设DP[i][j]为,从i,j点切开的木材,完成切割需要的cost,显然对于所有D ...
- UVa 10003 - Cutting Sticks(区间DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 10003 Cutting Sticks 切木棍 dp
题意:把一根木棍按给定的n个点切下去,每次切的花费为切的那段木棍的长度,求最小花费. 这题出在dp入门这边,但是我看完题后有强烈的既是感,这不是以前做过的石子合并的题目变形吗? 题目其实就是把n+1根 ...
- UVA - 10003 Cutting Sticks(切木棍)(dp)
题意:有一根长度为L(L<1000)的棍子,还有n(n < 50)个切割点的位置(按照从小到大排列).你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小.每次切割的费用 ...
- uva 10003 Cutting Sticks (区间dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: 打开 题目大意 一根长为l的木棍,上面有n个"切点",每个点的位置为c[i] 要按照一 ...
随机推荐
- ZBrush中如何对模型进行减面操作
Decimation Master是ZBrush 4R8自带的一个插件.中文名叫减面大师.其功能非常强大,也非常的方便,可以帮助我们提高效率,减少电脑资源损耗.作为一名3D美术师是必须掌握的一个技术. ...
- XML教程!
什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据.XML标签没有被预定义,需要 ...
- easyui的增删改
陈旧的开发模式PM:“我要这个功能”后端:“这个先找前端做个模板”前端:“模板做完了”后端:“我来对接一下,这里样式不对”前端:“我改完了”后端:“功能交付”PM:“春节要加这个活动”后端:“这个先找 ...
- Hive 基本操作
1.创建一个表 (字段表名不加引号‘,分隔符需要加引号) create table t1( id int ,name string ,hobby array<string> ,add ma ...
- Day 05 流程控制
流程控制 if 判断 语法: if if...else if...elif...else if判断是干什么的呢?if判断其实是在模拟人做判断.就是说如果这样干什么,如果那样干什么. if...else ...
- 用 Java 技术创建 RESTful Web (服务 JAX-RS:一种更为简单、可移植性更好的替代方式)
作者: Dustin Amrhein, 软件工程师, IBM Nick Gallardo, 软件工程师, IBM 出处: http://www.ibm.com/developerworks/cn/we ...
- [国家集训队2009]小Z的袜子
题目:洛谷P1494.BZOJ2038. 题目大意:给你一列袜子的颜色,每次要你求从区间$[L,R]$内随机选两个袜子颜色相同的概率.解题思路:首先,对于某个特定区间$[L,R]$,它的概率是$\fr ...
- AjAX 常用参数
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...
- 小学生绞尽脑汁也学不会的python(面对对象-----成员)
小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...
- VUE:模板语法(小白自学)
VUE:模板语法 一:何为声明式 安装规定的语法,去实现一些效果(不需要管流程). 二:模板语法 <!DOCTYPE html> <html> <head> < ...