区间 DP 常见建模技巧
将区间左右端点显式表现在 dp
状态定义里
例如说 dp[l][r] 表示区间 [l,r] 内的某某状态,且通常需要小区间拼接成大区间。为了保证正确性,这种转移通常先枚举区间长度,然后再枚举左右端点。
dp[l,r]←F( [l,a1],[a1,a2],…[am,r] ),l≤a1≤a2⋯≤am≤r有的时候,也会省略掉一个端点,只保留 l (or r)。这种形式的 DP 通常是区间的特例,即 dp[i] 代表 [i,n] 后缀或者 [1,i] 前缀。状态转移差不多就是
dp[i]←dp[j]+f( [i,j) )