DP中有这样一类问题,要求相邻两个要满足一些限制条件。这类问题比较令人头疼。
解决这类问题的思想是:把状态的转移从选择某几个进行转移变成插入某几个的形式
具体方法是:
- DP状态中多记录一维表示不合法方案数
- 转移过程是将这几个状态插入原来的状态,方案数通过增加(减少)的不合法数来排列组合计算。
这样下来,时间复杂度增加的是:状态的一维,以及转移过程中枚举插入的一维。
注释:枚举插入为什么要一维?根据不同情况判断,但大多数情况都是——不枚举这个位置怎么知道这两个相邻是否合法?