UVA10003切木棍DP
来源:互联网 发布:ubuntu登陆无限循环 编辑:程序博客网 时间:2024/04/29 10:08
/*Sample Input100 325 50 751044 5 7 80Sample OutputThe minimum cutting is 200.The minimum cutting is 22.题意:你的任务是替一家叫Analog Cutting Machinery (ACM)的公司切割木棍。 切割木棍的成本是根据木棍的长度而定。 而且切割木棍的时候每次只切一段。很显然的,不同切割的顺序会有不同的成本。 例如:有一根长10公尺的木棍必须在第2、4、7公尺的地方切割。 这个时候就有几种选择了。你可以选择先切2公尺的地方,然后切4公尺的地方,最后切7公尺的地方。这样的选择其成本为:10+8+6=24。 因为第一次切时木棍长10公尺,第二次切时木棍长8公尺,第三次切时木棍长6公尺。但是如果你选择先切4公尺的地方,然后切2公尺的地方,最后切7公尺的地方,其成本为:10+4+6=20,这成本就是一个较好的选择。你的老板相信你的电脑能力一定可以找出切割一木棍所需最小的成本。思路:典型的动态规划题目,有点像矩阵链乘问题,找到状态转移公式就好了dp[i][j]=max{dp[i][k]+dp[k][j]+len[j]-len[i]|i<k<j}*/#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>const int INF = 0x3f3f3f3f;using namespace std;int dp[100][100];int num[100];int main(){ int len,n; while(scanf("%d",&len) && len)///木棍的长度 { scanf("%d",&n); ///切点的个数 memset(dp,0,sizeof(dp)); for(int i = 1; i <= n; i ++) scanf("%d",&num[i]); ///两个边界 num[0] = 0; num[n+1] = len; int i,j,k,minn,p; for(i = 1; i <= n + 1; i ++) ///枚举区间的长度 { for(j = 0; j + i <= n + 1; j ++) ///枚举切割区间的起点 { p = j + i; ///终点 minn = INF; for(k = j+1; k < p; k ++) ///切割的位置 { ///dp[j][k]为这一段起点到切割点之前更新的值,dp[k][p]为切割点到终点 ///num[p] - num[j]为计算起点到终点的长度 int temp = dp[j][k]+dp[k][p] + num[p] - num[j]; if(temp < minn) minn = temp; } if(minn != INF) dp[j][p] = minn; } } printf("The minimum cutting is %d.\n",dp[0][n+1]); } return 0;}
0 0
- UVA10003切木棍DP
- [UVA10003] 切木棍(dp)
- uva10003 切木棍 线性区间dp
- [UVa10003]切木棍
- 例题9-9 切木棍 UVa10003
- UVA10003固定点切木棍,怎么切使得每次切之前的木棍长度总和最小
- dp uva10003
- Uva10003 线性DP
- uva10003 区间DP
- UVA10003 简单DP
- UVA 10003 Cutting Sticks 切木棍 dp
- Uva 10003 切木棍(dp)
- 区间DP(切木棍,uva 10003)
- UVA 10003 切木棍(区间dp)
- UVA-10003 切木棍,区间dp
- uva10003 - Cutting Sticks(DP,区间)
- uva10003
- uva10003
- leetcode-Best Time to Buy and Sell Stock
- Dev CPP 中头文件样例(信息学奥赛用,前7行必须滴)
- JDK环境变量配置
- 一个三流城市小团队程序员的随笔(2)
- 如何阻止事件冒泡和默认事件
- UVA10003切木棍DP
- 设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
- [BZOJ1131][POI2008]Sta(树形dp+维护)
- 串口芯片型号8250、16550A等是什么意思
- sql server使用存储发送电子邮件,(HTML样式)
- iOS开发系列--IOS程序开发概览ios基础
- POJ 3968|UVALive 4992|HDU 3761|UVA 1475|Jungle Outpost|二分|半平面交
- AngularJS 日期转换字符串
- iOS开发系列--无限循环的图片浏览器