algorithm-dp-linear
线性dp
经典线性dp
对于字符串s
和t
,一般定义f[i][j]
表示对s[0:i]
和t[0:j]
的状态
- 最长公共子序列(LCS)
- 最长递增子序列(LIS)
一维dp
发生在前缀/后缀之间的转移,例如从 f[i−1]
转移到 f[i]
,或者从 f[j]
转移到 f[i]
- 一维线性dp
- 2896. 执行操作使两个字符串相等(2172): 需要先条件转换
特殊子序列dp
比较特殊的一类题型,递推比记忆化搜索好写
计算合法子序列的最长长度、个数、元素和等。
一般定义 f[x]
表示以元素(数字) x
结尾的合法子序列的 xxx 值(比如个数、元素和),从子序列的倒数第二个数转移过来。
- 2501. 数组中最长的方波(1480)
- 3202. 找出有效子序列的最大长度 II(1974)
- 3351. 好子序列的元素之和:一种比较不错的思路,可以通过这题理解特殊子序列dp
矩阵快速幂优化dp
请看快速幂
子矩阵dp
多维dp
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BUGHERE の 博客!
评论