UVA 10003 Cutting Sticks 区间dp
来源:互联网 发布:mac辣椒红 编辑:程序博客网 时间:2024/05/16 09:21
点击打开题目链接
锯木头,一根长 l 的木头,有 n 个位置可以锯,每次锯的花费为当前木头的长度。
求如何安排锯的顺序使得在 n 个位置锯后花费最小。
区间dp。dp[ L ][ R ] 表示合理安排锯的位置,从第 L 个位置距到第 R 个位置的最小花费。
则dp[ L ][ R ] = min { dp[ L ][ M ] + dp[ M + 1 ][ R ] + a[ R ] - a[ L - 1 ] , L <= M < R };
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int INF = 0xfffffff;const int MAXN = 50 + 5;int dp[MAXN][MAXN], a[MAXN];int main(){ int Len, n, x; while (~scanf("%d", &Len), Len) { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } a[n + 1] = Len; for (int i = 2; i <= n + 1; i++) //长度 { for (int L = 1; L <= n - i + 2; L++) //锯的位置起点 { int R = L + i - 1; //终点 dp[L][R] = INF; //初始化 int Min = INF; for (int M = L; M < R; M++) //求最优解 { Min = min(Min, dp[L][M] + dp[M + 1][R] + a[R] - a[L - 1]); } dp[L][R] = min(Min, dp[L][R]); } } printf("The minimum cutting is %d.\n", dp[1][n + 1]); } return 0;}
0 0
- UVa 10003 - Cutting Sticks 区间dp
- uva 10003 Cutting Sticks (区间dp)
- uva 10003 - Cutting Sticks(区间DP)
- uva 10003 Cutting Sticks(区间DP)
- UVA 10003 Cutting Sticks(区间dp)
- UVA 10003 - Cutting Sticks(区间DP)
- UVA 10003 Cutting Sticks 区间DP
- UVa 10003 Cutting Sticks (区间dp)
- uva 10003 Cutting Sticks 【区间dp】
- UVA - 10003 Cutting Sticks 区间DP
- Uva 10003-Cutting Sticks(区间DP)
- UVA 10003 - Cutting Sticks (区间DP)
- UVA - 10003 - Cutting Sticks (区间DP)
- uva 10003 Cutting Sticks 简单区间dp
- UVA 10003 Cutting Sticks 区间DP
- UVA 10003 Cutting Sticks(区间DP)
- UVA 10003 Cutting Sticks(区间dp)
- UVA 10003 Cutting Sticks 区间dp
- 干货三:CountDownTimer倒计时工具类
- python中有很多字符串连接方式
- shell之curl用法笔记
- SDWebImage缓存图片
- 最大连续子序列求和详解
- UVA 10003 Cutting Sticks 区间dp
- java连接MySQL数据库 json数据前后端交互
- 聊聊Socket、TCP/IP、HTTP、FTP及网络编程
- PHP rsort() 函数
- 使用hiero.jnlp生成BitmapFont
- C/汇编的混合编程
- Windows10 64位 Python3.5 安装Scrapy
- 对python脚本传参数
- 验车不求人 年检验车前该做的准备工作