传送门 : https://www.acwing.com/problem/content/description/284/
感觉 和 线性dp差不多 只是考虑状态转移的 时候不一样了
(怎么不一样说不上来)
思路要求 : 所有合并方案中 使得 答案最小的方案
状态表示 : f[i][j] 表示从第 i 堆 合并到 第 j 堆的 最小方案
(为什么呢? 考感觉吧 QAQ)
状态转移 :
第 i 堆 合并到 第 j 堆 一定可以表示为
第 i 堆 先合并到 第 k堆 然后 第k+1堆 合并到 第 j堆 即 : f [ i ] [ j ] = f [ i ] [ k ] + f [ k + 1 ] [ j ] f[i][j]= f[i][k]+f[k+1][j] f[i][j]=f[i][k]+f[k+1][j]
因为每次合并 都有 值的相加 但是又不能改变原来的
所以我们还需要多处理一个 前缀和 数组
f [ i ] [ j ] = min i ≤ k ≤ j − 1 f [ i ] [ k ] + f [ k + 1 ] [ j ] + s [ j ] − s [ i − 1 ] f[i][j]=\min _{i \leq k \leq j-1} f[i][k]+f[k+1][j]+s[j] - s[i-1] f[i][j]=mini≤k≤j−1f[i][k]+f[k+1][j]+s[j]−s[i−1]
因此本题就好做了
(哈哈哈哈哈 好难啊)
CODE/**
所有合并方式的 最小方案
方案是 (n-1)!
f[i][j]表示 将i到j合并成一堆的方案的集合
状态计算
i>n;
for(int i=1; i>a[i];
s[i] +=s[i-1]+a[i];
}
for (int len = 1; len
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?