【笔记】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 计数


2 状压

  • 2024/5/17 给定一个无向图,问最少可以用多少种颜色将所有点染色,使得每条边两侧颜色不同。【[ARC171D] Rolling Hash】【独占访问2 Exclusive Access 2
    fS 表示将点集 S 的导出子图按以上规则染色,需要的最少颜色数。设 g(S) 表示点集 S 是否为独立集。有转移:

    fS={0,S=minTSg(T){fST+1},S

    可以在 O(3n) 的时间复杂度内枚举子集实现。(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」树上异或 】【好题解
posted @   CloudWings  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示