今天主要是看了线性DP,也看了背包的一点,但是还没有看完。线性DP应该是动态规划问题的基础了,最基础的三个问题就是最长上升子序列(LIS)、最长公共子序列(LCS)和数字三角形的问题。其实DP的思想很简单,将求解过程分阶段,每一个阶段所求解的值有“无后效性(对下一阶段无影响)”然后根据每一阶段的求解规则列写状态转移方程,DP其实也是个递归求解的过程。
我看到书上有好多写多维的DP的,其实只要理解了原理,几维的DP都能做,但是维数过多会增加时间和空间复杂度,降低维数尤为重要,在可行范围内,要尽量把维数降低,这样求解更为简单,而且时间空间复杂度都低。但是怎么降维度也是个大问题,还得慢慢体会,慢慢钻研。
今天还看了一点背包问题,背包也是一种特殊的DP了,有固定的模板可以用来解决一些特殊的DP问题,明天看完了再整理一下模板吧。
2019年8月12日训练日记
最新推荐文章于 2025-06-06 13:08:43 发布
