【笔记】Tricks - 动态规划 DP
Ordinary
- 2024/4/21 对于状态转移比较复杂的 DP,可以考虑记忆化搜索。【[ABC350E] Toward 0】
- 2024/5/2 如果 dp 状态数比较多,可以考虑减少状态(离散化)然后降低复杂度【NOIP模拟赛8 六出祁山】
- 2024/5/2 如果 dp 转移有环,一般有如下三种处理方法:【NOIP模拟赛8 威震逍遥津】
- 如果状态是求极值,可以考虑类 dijkstra 转移;
- 把有环的部分单独处理(用 Floyd 预处理),然后在之后的转移中忽略这些转移,即可;
- 将朴素的有环的 dp 跑若干遍即可。
正确性的证明可以考虑转移边和状态实际上构成图,转移的过程就是跑最短路,上述的过程可以看成是 SPFA 算法。
- 2024/11/8 dp 转移的时候需要满足一些条件?那就在状态里面做手脚【「NOIP2024模拟赛24 T2」子序列们】
1 计数
- 2024/11/19 考虑 对称性,i.e. 某个因素的改变可能不会影响方案数(方案数相同)【「CF967E1」Deterministic Heap (Easy Version)】
2 状压
-
2024/5/17 给定一个无向图,问最少可以用多少种颜色将所有点染色,使得每条边两侧颜色不同。【[ARC171D] Rolling Hash】【独占访问2 Exclusive Access 2】
设 表示将点集 的导出子图按以上规则染色,需要的最少颜色数。设 表示点集 是否为独立集。有转移:可以在
的时间复杂度内枚举子集实现。(U
为全集,T
为枚举的S
的子集for (int S = 0; S < U; S++) for (int T = S; T; T = (T-1) & S) ...
3 位运算相关
3.1 异或
- 2024/5/18 一般在处理异或运算发现不好转移的时候我们都会想到拆位。并且这个拆位时常是在与当前转移有关的部分的。比如后面这个题里面的当前连通块内的【「KDOI-06-S」树上异或 】【好题解】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗