鄙人dp菜如狗,想花暑假的时间来提高自己的建模能力和dp能力。
在网上搜集了大量的资料,dp大致分为以下几类,目前还只会简单的线性dp,等学完后,会不断更新此博客。
目前看到的网上比较好的博客:
一、线性DP
1. 常见模型:
背包问题模型:背包九讲
字符串dp模型:LIS(最长上升子序列),LCS(最长公共子序列),最长回文序列,字符串最短距离等等。
前缀和dp模型:最大正方形,最大子段和(连续的),最大子序列和(非连续的)等等。
2.解决思路
背包问题:熟练每个背包模型,学会从具体问题中抽象出背包的模型来,或者转换求解的目的,然后用已知的模型求解。
字符串:一般都是考虑前后一个字符的dp状态转换。
前缀和:抽象模型成为前缀和问题。