计数DP总结
动态规划-计数类-总结
计数类的题,一般都需要用到排列组合的知识,较常用的有阶乘、组合数(一般必不可少)、容斥原理、全集-补集=所求集。
背包类
母题
本题虽然简单,但是却无意间将计数类 DP
与背包结合在一起,状态
变式
本题本质上还是类似的状态,可以用
本题需要分类讨论。设
由于都是×3或÷2,所以选出的数不可能出现相等的情况,也就不用管重复了。令 DP
,但是状态跟母题还是一样的。
关键在于大于等于4的连通块。发现这样求不容易,所以我们应该反着求,于是我们的状态里可以包含一个点、双连通块、三连通块。第一维固定,后面我们只需记录两维,那么其中一种连通块的个数就可以求出,然后组合数分类讨论。
我们只关注状态,发现状态还是很普通,第二维维护的是最大值,然后使用前缀和优化。
-
发现
很大,于是考虑如果DP
,可能要矩阵乘法优化。发现不好优化,那我们尝试转换角度。先对 进行一次常规的DP
(注意去重),然后发现这个东西是可以贪心的,用求得的DP
数组计算。 -
本题应用了nim游戏的结论,但是可扔掉,发现只要扔掉的异或和等于原异或和即可,于是题意就进行了转换。然后又回归到母题经典的状态,注意本题还有一个关键的点就是一个数与比它小的数异或不会超出其二倍(异或的性质)。
-
本题的难点在于算重,所以关键就是假定一个顺序(即尽量靠左,可称作紧)。
-
与过河卒/数字三角形的转移类似。
-
[ABC311F] Yet Another Grid Task
在于条件的转换,通过对原网格进行变形,将它拉成一个平行四边形,即将给定的网格向下推,使其左上角斜向变形。将下、右下变为右、下。
-
prufer序列+圆排列
由于是序列型,所以一位是前
规律
发现状态的表示无非是第一维是前几个数/点(
难点一般在抓住题目中关键信息设计后面一到两维状态、组合数的转移、去重(可以自定义一个顺序,就是某种规则下的答案)、等价变形(题意、条件)。
计数 DP
可能作为算法的一部分,或同时是其他各种 DP
模型。
还有部分小技巧(贪心、异或性质等)。
特征
题目要求统计个数,而且个数一般极大。
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17668700.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步