UVA10003[Cutting Sticks] 区间动态规划模型
来源:互联网 发布:西北大学现代学院网络 编辑:程序博客网 时间:2024/05/29 03:01
题目链接
题意:题目:有一个长l的木头,切成n+1段,切割的代价是当前段长度,求最小代价和。
解题报告:
对于区间DP,我们常常用dp[i][j]来表示,区间 [ i,j ] 的答案
一般的方程为 dp[i][j]=min/max{ dp[i][k],dp[k][j] } + w
在这道题中,我们用dp[i][j],来表示分割 i~j这根木棍的最小代价。
dp[i][j]=min(dp[i][k],dp[k][j])+len[j]-len[i]
#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;int a[55], d[55][55], len, n;int main(){ while( scanf("%d", &len)==1 && len ){ scanf("%d", &n); for ( int i=1; i<=n; i++ ) scanf("%d", &a[i]); a[0]=0, a[n+1]=len; for ( int l=1; l-1<=n+1; l++ ) for ( int i=0; i+l-1<=n+1; i++ ){ int minv=(1<<31)-1; int j=i+l-1; d[i][j]=0; for ( int k=i+1; k<j; k++ ){ int tmp=d[i][k]+d[k][j]+a[j]-a[i]; if( minv>tmp ) minv=tmp; } if( minv!=(1<<31)-1 ) d[i][j]=minv; } printf("The minimum cutting is %d.\n", d[0][n+1] ); }}
阅读全文
0 0
- UVA10003[Cutting Sticks] 区间动态规划模型
- [动态规划]UVA10003 - Cutting Sticks
- uva10003 - Cutting Sticks(DP,区间)
- uva10003 Cutting Sticks 经典dP,表达式上的动态规划
- UVA10003---Cutting Sticks(简单区间dp)
- uva10003 - Cutting Sticks(区间dp)
- UVA10003 Cutting Sticks(区间 DP)
- UVa10003 - Cutting Sticks
- uva10003 - Cutting Sticks
- UVA10003 - Cutting Sticks
- UVA10003 Cutting Sticks
- uva10003 Cutting Sticks
- UVa10003 cutting sticks
- uva10003 Cutting sticks
- uva10003 Cutting Sticks
- uva10003 Cutting Sticks
- UVa10003 Cutting Sticks
- uva 10003 Cutting Sticks (动态规划:区间DP)
- Python 优雅的操作字典
- HDU1034 Candy Sharing Game
- 关于el表达式的整理
- 连接查询
- HDU1035 Robot Motion
- UVA10003[Cutting Sticks] 区间动态规划模型
- 《ImageNet Classification with Deep Convolutional Neural Networks》
- http 错误码 401 405 400 500
- HDU1036 Average is not Fast Enough!
- shiro(四) 关于session:验证登录时候如何处理session以及其他
- HDU1039 Easier Done Than Said?
- .NET Core 2.0 正式发布信息汇总
- Java并发信号量demo
- HDU1042 N!(大整数类应用)