DP总结

总结

Dp专题也复习结束了,下面简单的总结一下DP的知识。

1. 线性DP

注意dp的三个条件 子问题重叠性 最优子结构 无后效性;
做题时要抽象出题目的关键点作为状态,并选择覆盖整个状态空间的最小维度集合;
关键在于设计出状态,状态设计对了,方程就比较好想。
而设计状态又要依靠经验,大量的刷题量来积累出来的。

2.背包

首先掌握01背包,完全背包,多重背包,分组背包的模型
在传统的线性DP基础上省略了阶段这个维度,通过控制循环顺序来进行背包Dp;
还要掌握多重背包的二进制拆分优化,以及单调队列优化。

3.区间DP

区间dp主要就是状态设计
区间Dp的一般转移方式:枚举划分点;
线性DP中区间与树形结构中子树的联系,要想清楚、

4.树形DP

树形DP的状态设计。
实现方式深搜,在回溯的时候进行DP;
背包类树形DP的实现方式:分组背包转移
不定根的树形Dp:二次扫描与换根法

5.环形与后效性的处理

环形DP的两种手段,两次DP(一次断开,一次强制连接),环拆成二倍链;
高斯消元求解有后效性的状态转移方程(超纲)

6.状压DP

主要就是形成一种状态压缩的思想来优化Dp
状压Dp的状态表示:集合形状态压缩为整数状态的方程,以及相关的位运算;
状压Dp的转移:一般转移,DFS转移,以及合法性的判定;

7.计数类DP

首先要满足计数类DP不重不漏的原则,主要就是加法原理和乘法原理的应用;
还有就是子问题的互斥性,寻找基准点的思想,围绕基准点构造一个不可划分的整体

8.数位DP

数位DP的实现方法主要就是有记忆化搜索的方法来实现的。
基本上就是套模板很简单

单调队列优化DP

能够确定决策的取值范围并挖掘其单调性
状态转移方程的变形,分开只含状态变量和只含决策变量的部分
单调队列的常用操作:检查队头是否合法,取最优,队尾插入并维护单调性;

你可能感兴趣的:(DP)