Tyvj 1055 沙子合并 DP
2014-03-12 00:03
232 查看
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define inf 10000000 #define N 310 int a ; int sum ; int dp ; int main(){ int n; while(scanf("%d",&n)!=EOF){ sum[0]=0; memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ fill(dp[i],dp[i]+n+1,inf); scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; dp[i][1]=0; } for(int i=2;i<=n;i++){ for(int j=1;j+i-1<=n;j++){ for(int h=1;h<=i;h++){ dp[j][i]=min(dp[j][i],dp[j][h]+dp[j+h][i-h]+sum[j+i-1]-sum[j-1]); } } } printf("%d\n",dp[1] ); } return 0; }dp[j][i]表示从j开始合并i堆的最小代价,因为每次都是合并两堆,这两堆是哪两堆,什么组成的?枚举分段的位置就可以获得相应的两堆,从中选出最小的就行了,i从小开始枚举的原因是:保证大堆用到的小堆的结果已经计算出来。
相关文章推荐
- tyvj1055 沙子合并 (区间dp)
- tyvj 1055 沙子合并 区间dp经典模型,石子合并
- tyvj1055 沙子合并
- TYVJ 1055 沙子合并
- tyvj 1055 沙子合并
- |Tyvj|NOI1995|动态规划|P1055 沙子合并
- tyvj p1055 沙子合并(dp)
- 沙子合并-dp
- 【tyvj】【区间dp】石子合并
- tyvj p1062合并傻子(dp)
- [TYVJ] P1055 沙子合并
- tyvj 1055 区间dp
- tyvj 1062 合并傻子 区间dp,典型模型石子归并
- TYVJ 1062 合并傻子
- 石子(环形)合并问题_dp
- hdu 1267 下沙的沙子有几粒? (DP)
- TYVJ 1062 合并傻子 解题报告
- 合并石子(三重dp)
- 【DP入门】石子合并(一)
- Hihocoder 1055 树形DP(分组背包)