首页 > 代码库 > DP总结

DP总结

最近也写了一些dp,感觉对于状态的转移有了点小小的体会

像之前写的都是一些经典的dp背包啊,LIS之类的,最近写了一些感觉更在于寻找状态的dp,当然也不是很难,太难的我也不会。

目标答案一定是由前一个状态来表示从而地推,dp的难处就在于如何用简单的数组来表示复杂的状态转移的过程,这也是我们要做和练习的事情。

由于一些复杂状态的题目(状态压缩之类的),有时候我们不得不对数组多开一维(或者是利用二进制位运算)来实现这个状态,把这个复杂的状态

表示出来,利用状态转移方程地推下去即可。

 

谈谈我学的dp,主要都是线性dp,难点的我也没学过

一类就是一维数组即可实现的线性dp,一般相对简单点,因为状态容易表示出来,一般是对于一串数字进行的操作,也不乏抽象为别的东西。

一类是区间dp,为了求得一个大区间的最优解我们通常要知道所有小区间的最优解才能进行下去,一般用二维数组dp[i][j]表示区间【i,j】的最优解,

对于此类dp有平行不等式的优化操作我暂时不会,经典问题有合并石子,最大累乘等。

一类是状态压缩dp,真正的装压dp目前还未掌握(日后学会在更),先是针对于一些简单的01状态而言,一般可以用dp[n][0]-dp[n][1]来简单的表示这两种状态对应的最优解,

经典问题有开关灯等

DP总结