UVA 10003 Cutting Sticks
来源:互联网 发布:拓普康es52传输软件 编辑:程序博客网 时间:2024/06/05 16:24
题目描述:
点击打开链接
非常典型的区间DP,枚举区间长度i,枚举起点j然后确定终点r,之后枚举区间分割点k来更新状态,dp[j][r]=min(dp[j][r],dp[j][k]+dp[k][r]+x),x为此时分割的长度。
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<stack>#include<queue>#include<algorithm>using namespace std;const int MAXM=110;const int INF=999999;int dp[MAXM][MAXM];int len;int a[MAXM];int n;int main(){ while(scanf("%d",&len)!=EOF) { if (len==0) break; scanf("%d",&n); a[0]=0; for (int i=1;i<=n;i++) scanf("%d",&a[i]); a[n+1]=len; memset(dp,INF,sizeof(dp)); for (int i=1;i<=n+1;i++) { for (int j=0;j+i<=n+1;j++) { int r=i+j; if (i==1) dp[j][r]=0; for (int k=j+1;k<r;k++) dp[j][r]=min(dp[j][r],dp[j][k]+dp[k][r]+a[r]-a[j]); } } printf("The minimum cutting is %d.\n",dp[0][n+1]); } return 0;}
阅读全文
0 0
- UVa 10003 Cutting Sticks
- UVA 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- uva 10003 Cutting Sticks
- uva:10003 - Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVA 10003 Cutting Sticks
- Uva - 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVA 10003 Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- Uva-10003-Cutting Sticks
- UVa:10003 Cutting Sticks
- UVA - 10003 Cutting Sticks
- 解题报告:Codeforces Round #146 (Div. 1) B. Let's Play Osu! 概率DP
- POJ2923:Relocation(状态压缩dp)
- Java垃圾回收算法
- POJ
- LCA实现的三种不同的方法
- UVA 10003 Cutting Sticks
- 面试题 21: 包含min函数的栈
- nginx、php-fpm启动脚本详解
- jvmGC(垃圾回收)机制
- css边框border
- 一元多项式求导
- 查看某一目录下所有文件大小
- 543. Diameter of Binary Tree
- 朴素贝叶斯的概率理论及其python代码实现文本分类的实例