$dp$专题总结
@
总结
这从国庆到今天这段时间断断续续地考了图论和\(dp\)的专题复习题,图论在上周结束,而\(dp\)在今天也终于迎来了尾声。
因为我也被胡老师安排到学生\(dp\)专题复习,所以这段时间大部分都是在刷\(dp\)题,经过这段时间的复习,我发现了自己的一些缺点,也在改题和刷题中提升了自己,现在在这里把自己的心得总结一下。
首先\(dp\)的基本题型有这几类:
1.普通\(dp\):没有固定的套路,需要自己分析问题并想出dp的状态和方程。
2.背包:物品有价值和体积,背包的体积是有限的,用有限的体积去装尽可能多的价值的物品,这就是背包问题,当然有很多分类:\(01\)背包,多重背包,完全背包,树上背包......
3.树形\(dp\):在树上做\(dp\),需要考虑子树与根的关系。
4.数位\(dp\):通常是求一个大范围内的满足条件的数,采用记忆化搜索的形式比较方便。
5.计数\(dp\):与数学结合的\(dp\),通常求方案数。
6.状压\(dp\):用一个数在二进制下的形式表示一个状态,一般是对状态需要很详细时使用,数据范围一般也比较小。
7.区间\(dp\):当只用一个位置表示时无法转移时,考虑状态设成一个区间。
8.期望\(dp\):结合了数学概率期望的\(dp\)。
9.\(dp\)优化:单调队列优化,数据结构优化,斜率优化,四边形不等式优化......
这几天考的题目基本上覆盖了上述的所有知识点,我相对擅长的有树形dp、状压dp、单调队列优化dp,毕竟是我在主要负责这三个板块,所以复习了很多以前的题,刷了一些新题。经过这些学习,我发现,dp其实也要靠一种感觉,学语言要有语感,做题也有题感,这几天刷了很多树形dp的题,今天看到第二题我就写出了状态和方程,由此可见,刷题可以增加自己的理解,从而能够更快、更准确地写出dp状态和方程。当然我也存在一些不足,比如:没有固定套路的普通\(dp\)就不是很容易想出正确的做法,因为它没有固定的套路,状态的设法,转移方程千变万化,只有对\(dp\)的理解很深入才容易想出正解。
要学好,也不是那么困难,\(dp\)的本质都是相同的,无非都是这四个特点:
1.要去刻画最优解的结构特征。
2.尝试递归地定义最优解的值(就是我们常说的考虑从 转移到)。
3.计算最优解。
4.利用计算出的信息构造一个最优解。
看起来毫无套路,其实考察的就是对问题本质的剖析能力,今后的这段时间,再做dp题时,我也会更加地重视对问题分析的过程,自己不会的,也要找同学讨论,弄清楚他是怎样理解的题目,以及状态和方程的本质。