1、时间复杂度
动态规划的时间复杂度分为两部分:状态计算的时间复杂度,每个状态的状态转移时间复杂度。
所有状态计算的时间复杂度为 O ( a ) O(a) O(a),单个状态的状态转移时间复杂度为 O ( b ) O(b) O(b),则整个动态规划的求解过程的时间复杂度就是 O ( a b ) O(ab) O(ab)。
线性DP 的状态数就是 O ( n ) O(n) O(n),状态转移的时间复杂度一般为 O ( 1 ) O(1) O(1) 或者 O ( n ) O(n) O(n),也有 O ( l o g 2 n ) O(log_2n) O(log2n) 的,可能利用二分枚举进行状态转移,比如最长单调子序列。
2、线性DP拓展
常见的线性DP有最长单调子序列、前缀最值、前缀和、背包问题等等。