题意:

给定一个l长得木棍,要把它从给定的n个点截断,每截断一次需要的费用为木棍的长度。

求截断这个木棍所要花费的最小代价。

思路:

典型的区间DP,要额外添加2个点:0和l,于是区间从1不断扩展到n+1,dp[i][j]代表点i到点j所要花费的最小代价。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>#define min(a,b) (((a) < (b)) ? (a) : (b))const int INF = 1e9;
int a[60];
int dp[60][60];int main()
{int l, n;while (scanf("%d", &l) && l){scanf("%d", &n);for (int i = 1; i <= n; ++i)scanf("%d", &a[i]);a[0] = 0, a[n+1] = l;n += 1;memset(dp, 0, sizeof(dp));for (int i = 0; i <= n; ++i){for (int j = 0; j <= n; ++j)dp[i][j] = INF;dp[i][i] = 0;}for (int i = 0; i < n; ++i)dp[i][i+1] = 0;for (int p = 2; p <= n; ++p)for (int i = 0, j = p; j <= n; ++i, ++j)for (int k = i; k < j; ++k)dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j] + a[j] - a[i]);printf("The minimum cutting is %d.\n", dp[0][n]);}return 0;
}

转载于:https://www.cnblogs.com/kedebug/archive/2012/11/11/2765517.html

UVa 10003 Cutting Sticks(区间DP)相关推荐

  1. UVA 10003 Cutting Sticks (区间dp)

    题意: 给你一根木块,让你在n个点切块(不能改变顺序),使得总花费最小,看拿来切的那根木棍的长度. 代码: #include <map> #include <set> #inc ...

  2. UVA - 10003 - Cutting Sticks

    原命题链接:PDF/Vjudge 题目的意思是:告诉木棍的总长度,切点个数,和切点位置.每次切割花费的力气为切割的木棍的长度,求出最小花费的力气值. 还没怎么开始看dp,一开始看这道题目,想起了做过的 ...

  3. uva 10003——Cutting Sticks

    题意:给定一长为L的木棍和n个切割点,每次切割的费用为切割的长度,求最小的费用. 思路:dp,子问题是区间(i,j)的最小费用,临界是(i,j)只有一个切割点.dp[i,j]=min(dp[i,k]+ ...

  4. UVA 10003 Cutting Sticks

    大意:确定切割木棍的次序, 代价为当前木棍长度,使得切割的总的代价最小. 思路:我想了很久,后来发现状态转移方程可以这样表示:d[i][j] = min(d[i][j], d[i][k]+d[k][j ...

  5. UVa 10003 - Cutting Sticks

    记忆化搜索.还有递归调用.大概题意就是一根木棍的长度length,按他所给的点切割.求最大的价值. X , Y 表示 X点到Y点的.转移方程vis[X][Y] = min ( DP[X][i] + D ...

  6. UVa 1632 阿里巴巴(区间DP)

    https://vjudge.net/problem/UVA-1632 题意: 直线上有n个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba可以从任意位置出发,求访问完所有点的最短 ...

  7. 紫书动规 例题9-10 UVA - 1626 Brackets sequence 区间dp

    题目链接: https://vjudge.net/problem/UVA-1626 题意: 题解: dp[i][j]:= i~j需要最少的括号 区间dp: dp[i][j] = min(dp[i][j ...

  8. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

  9. 【区间dp】uva10003+ uva 1626 括号匹配问题 【有空自己记忆化写一下!!!】

    讲道理,其实我还不是太懂,这个题看到了两种写法 之前大概想的差不多,要这样实现呀: 常规写法,大概n--3 递归写法,稍微好理解一点 好了,接下来自从看了liuchuo的博客我要变身玛丽苏橙色了 题目 ...

  10. hdu 4597 + uva 10891(一类区间dp)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...

最新文章

  1. SharePoint Server 2010 安装图解
  2. hdu 5019 第k大公约数
  3. kubernetes入门mysql_Kubernetes 1.13 完全入门 (10) Mysql 数据例子
  4. python和javascript哪个好_JavaScript与Python:主要区别
  5. JUC.Condition学习笔记[附详细源码解析]
  6. Python3.x和Python2.x的区别[转]
  7. 在Anaconda中安装TensorFlow1.14.0与TensorFlow2.0.0
  8. (24)VHDL实现与或非(行为描述)
  9. 剑指offer之删除链表中重复的结点
  10. linux如何安装阵列卡驱动程序,Linux安装阵列卡驱动及档.doc
  11. 谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持
  12. 数据库基本操作和常用命令
  13. Python深度学习-NLP实战:FastText实现中文文本分类(代码已跑通!)
  14. miui 10 android 9,MIUI 10稳定版刚到 基于安卓9的MIUI10 8.9.7开发版也来了
  15. 【调剂】上海海洋大学物理海洋学专业招收理学调剂硕士生
  16. “创新雷神号”卫星成功发射,华为云分布式云原生“天地一体”首次组网成功
  17. 破解微信数据库 并查询数据上传服务器
  18. 微信小程序使用高德小程序定位插件amap易忽略问题
  19. 工业品企业的网站到底应该放什么内容?上海添力
  20. vagrant ssh卡住

热门文章

  1. batchsize和模型精度的影响
  2. version `GLIBCXX_3.4.22‘ not found
  3. python实现同一目录文件下所有Excel数据文件的合并
  4. nohup命令简单的使用
  5. Android手机使用Windows应用,微软宣布在你的手机应用上运行安卓APP功能向Windows 10稳定版提供...
  6. python图像边缘检测_python 简单图像处理(11) 空间域图像锐化(边缘检测)
  7. python setuptools 打包 发布
  8. Hyperledger fabric v2.3 交易流程 翻译
  9. JDBC12 ORM01 Object[]存放一条记录
  10. oracle的解析器,Oracle中sql量化分析工具