状态
什么是状态:与问题相关的条件的集合(哪些问题影响当前局面?)。
状态需无后效性:未被记录的信息不会对当前局面的本质造成影响(影响答案)。
由于我们需要将算法用代码实现,所以我们的状态需要便于存放(在数组内)。
转移
由状态之间的关系得到。(由某些状态出发,可以到达某些后继状态。)
在写代码时,我们需要计算答案,于是我们需要一个具体的式子。
这个式子就叫做状态转移方程。
如何评价一个动态规划算法设计的好坏
状态和转移的规模。
算法的总复杂度就是状态的量级乘上转移的复杂度。
几类常见的动态规划和一些经典问题
区间DP
树形DP
数位DP
状压DP
概率期望DP
背包问题
LIS
LCS
括号序列计数
(涉及版权问题 具体解答看ppt)
附状压DP课堂笔记