UVA 10003 Cutting Sticks [线性结构dp] [最优矩阵链乘]
2016-08-23 12:22
495 查看
Cutting Sticks
Time Limit: 3000MS 64bit IO Format: %lld & %llu
最优矩阵链乘问题,阶段即使区间长度,因为长区间依赖于短区间,那么初始化dp[i][i+1]=0,因为只剩一段的时候不需要切割,同样k=2开始循环,避免修改dp[i][i+1]=0
Time Limit: 3000MS 64bit IO Format: %lld & %llu
最优矩阵链乘问题,阶段即使区间长度,因为长区间依赖于短区间,那么初始化dp[i][i+1]=0,因为只剩一段的时候不需要切割,同样k=2开始循环,避免修改dp[i][i+1]=0
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<vector> #include<queue> #include<stack> #include<map> #include<set> #include<string> #include<iomanip> #include<ctime> #include<climits> #include<cctype> #include<algorithm> #ifdef WIN32 #define AUTO "%I64d" #else #define AUTO "%lld" #endif using namespace std; #define smax(x,tmp) x=max((x),(tmp)) #define smin(x,tmp) x=min((x),(tmp)) #define maxx(x1,x2,x3) max(max(x1,x2),x3) #define minn(x1,x2,x3) min(min(x1,x2),x3) const int INF=0x3f3f3f3f; const int maxn = 55; int L,n; int sum[maxn]; inline bool init() { if(!~scanf("%d%d",&L,&n) || !L) return false; for(int i=1;i<=n;i++) scanf("%d",sum+i); sum[n+1]=L; return true; } int dp[maxn][maxn]; int dynamic() { memset(dp,0x3f,sizeof(dp)); for(int i=0;i<=n;i++) dp[i][i+1]=0; for(int k=2;k<=n+1;k++) for(int i=0;i<=n;i++) { int j=i+k; if(j>n+1) break; for(int p=i+1;p<j;p++) smin(dp[i][j],dp[i][p]+dp[p][j]); dp[i][j] += sum[j]-sum[i]; } return dp[0][n+1]; } int main() { #ifndef ONLINE_JUDGE freopen("cut.in","r",stdin); freopen("cut.out","w",stdout); #endif while(init()) printf("The minimum cutting is %d.\n",dynamic()); return 0; }
相关文章推荐
- 例题9-9 UVa10003 Cutting Sticks(DP:矩阵链乘)
- 【DP】UVA 10003 Cutting Sticks 类似矩阵链乘
- UVa 10003 切木棍(区间DP+最优矩阵链乘)
- 【DP】UVA 10003 Cutting Sticks 类似矩阵链乘
- 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
- Uva10003 线性DP
- UVa 348 最优矩阵链乘 (DP)
- uva 10003 Cutting Sticks 【区间dp】
- UVA 10003 - Cutting Sticks(区间DP)
- UVa 348 Optimal Array Multiplication Sequence (DP 最优矩阵链乘)
- uva10003 - Cutting Sticks(DP,区间)
- UVA 10003 Cutting Sticks 切木棍 dp
- UVA 10003 Cutting Sticks 区间DP
- UVA 348 Optimal Array Multiplication Sequence 最优矩阵链乘 区间DP
- UVa 10003 - Cutting Sticks 区间dp