uva10003 切木棍 线性区间dp
来源:互联网 发布:centos 7.0安装教程 编辑:程序博客网 时间:2024/05/31 19:14
- 线性dp,区间思想。
- 动态转移方程:区间代价+此次的代价。
- 下标i,j指的是切割点而不是每一个点。
- 此次代价在底层可以直接返回结果。
- 利用了标准的记忆化搜索模板,如果存在则返回。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19202
#include<cstdio>#include<cstring>using namespace std;#define ms(s) memset(s,0,sizeof(s))const int maxn = 50 + 5;int n, L, a[maxn], vis[maxn][maxn], d[maxn][maxn];int dp(int i, int j){ if(i >= j-1) return 0; if(vis[i][j])//standard memorize return d[i][j]; vis[i][j] = 1; int& ans = d[i][j];//it is convenient to understand ans = -1; for(int k = i+1; k <= j-1; k++) { int v = dp(i,k) +dp(k,j) + a[j]-a[i]; if(ans < 0 || v < ans) ans = v; } return ans;}int main(){ while(scanf("%d%d",&L, &n) == 2 && L) { for(int i = 1; i <= n; i++) scanf("%d",&a[i]); a[0] = 0; a[n + 1] = L; ms(vis); printf("The minimum cutting is %d.\n",dp(0, n+1)); } return 0;}
0 0
- uva10003 切木棍 线性区间dp
- UVA10003切木棍DP
- [UVA10003] 切木棍(dp)
- [UVa10003]切木棍
- uva10003 区间DP
- Uva10003 线性DP
- 区间DP(切木棍,uva 10003)
- UVA 10003 切木棍(区间dp)
- UVA-10003 切木棍,区间dp
- uva10003 - Cutting Sticks(DP,区间)
- 例题9-9 切木棍 UVa10003
- UVA10003---Cutting Sticks(简单区间dp)
- uva10003 - Cutting Sticks(区间dp)
- UVA10003 Cutting Sticks(区间 DP)
- UVA10003固定点切木棍,怎么切使得每次切之前的木棍长度总和最小
- dp uva10003
- uva10003(区间dp,提供两种枚举顺序)
- 例题9-9 UVA 10003 Cutting Sticks 切木棍(最优三角剖分 || 区间dp )
- 文章标题
- Android Studio引用第三方jar包及开源library的方法
- 多线程编程入门(16):线程同步工具之CyclicBarrier
- uva10129 欧拉回路 判断出入度数 连通性 遍历压栈
- 【LEETCODE】368- Largest Divisible Subset [Python]
- uva10003 切木棍 线性区间dp
- uva1626 括号序列
- uva1625 颜色的长度
- uva1618 分步枚举优化
- java LinkedList 基本用法
- 电话本再实现
- Nodejs调试技术总结
- Android Studio 清除项目无用资源
- Grade for Android(从 Gradle 和 AS 开始)