依据:1.不重 2.不漏
不过并不是这两个条件每一次都需要满足
在求数量的时候1一定要满足,再求min和max的时候1可以不满足
但是不漏一定要遵守
一般的dp划分依据:
1.按照最后一步来划分
dp的计算顺序问题:
(按照拓扑序)
dp状态一般怎么表示:
如果是网格图就是f[i,j]
线性图就是f[i]
如果是背包问题的话,就是第一维是物品,第二维是体积
背包问题的循环顺序不能随便变,但是一般的只要符合拓扑序就行
本质上来说dp是图论的一小部分
百分之九十的dp都能转化成最短路
当我们的图,是拓扑图的时候,可以把最短路问题转化成dp问题
当我们的dp设置完之后,发现它的状态不是拓扑图了,我们可以用最短路解决
状态表示:每一个都代表一个集合,它必须是有意义的,而且每一个都能推出来我们的答案
状态计算:找到一种方式能够算出来每个集合的值
对于lis,除了贪心之外,还有一些数据结构可以优化成nlogn,比如(离散化)线段树,平衡树,