精华
区间 DP :
区间 DP 的特点:
- 合并:即将两个或多个部分进行整合,当然也可以反过来;
- 特征:能将问题分解为能两两合并的形式;
- 求解:对整个问题设最优值,枚举合并点,将问题分解为左右两个部分,最后合并两个部分的最优值得到原问题的最优值。
这是大部分区间 DP 所包含的特点。解决该问题,应该从简单的开始,然后扩展到最后最难的部分。
这四道题不同在于,当前状态的转移,会影响其他,也就是有后效性。怎么解决呢?那就是把有后效性的东西设进状态里。
就比如“成绩单”这道题,内部合并的时候不确定有没有把最大(小)的给用掉,为了没有后效性,所以把最大(小)值设进状态里。(我还没过)
字符串折叠、字符合并、压缩也是一样的。
这两道题体现了状态越详细,转移更简单。
背包
朴素的背包问题都是非常简单的。单调队列(多重)、二进制(完全)、bitset(是否能拼出一种体积)就够用了。
而有思维难度的背包题一般有如下几个特点:
- 数据范围很大,不能用常规套路解决
- 数据范围有明显的特点,突破点一般在这里
如果不满足以上特点,还有几种情况:
- 方案数
- 详细方案
- 去掉某些物品等等...
方案数:弄清楚从哪些地方转移过来,哪些部分会重复
详细方案:一般都有字典序的要求,可以反着推,也可以在转移的时候记录路径(不推荐)
DP 问题很多时候可以用这种思想:正难则反,

浙公网安备 33010602011771号