动态规划

背包

  1. 01背包
  2. 无穷背包
  3. 多重背包
  4. 有限制背包
  5. 分组背包
  6. 树上背包
  7. bitset优化

基本模型

  1. 最长公共子序列:普通 \(O(n^2)\) / 无重复元素 \(O(n \log n)\)
  2. 最长上升子序列:\(O(n \log(n))\)
  3. 基于位置设计的规划规划
  4. 基于值设计的动态规划
  5. 将限制条件作为状态
  6. 基于dp求前若干优解(最大、次大等)

区间dp

  1. 基于区间设计的状态转移 \(dp[l][r]\)
  2. 对于不关心区间构造只关心区间长度的情况,可以压缩为一个维度

树形dp

  1. 树形dp的基本思想1: 考虑父子间的转移关系
  2. 树形dp的基本思想2: 考虑将子树所在集合并入当前点所在集合
  3. 换根

状压dp

  1. 利用二进制数位表示状态压缩
  2. 利用数位转换进行更高进制状态压缩
  3. 子集枚举
  4. 子集和

数位dp

  1. 基于数位的dp方法:记忆化搜索
  2. 根据题目确定从低位到高位或从高位到低位。具体应分析无后效性。

DAG上dp

  1. 利用拓扑排序进行DAG上的dp转移

数据结构优化dp

  1. 二分优化dp
  2. 单调队列优化dp
  3. 线段树优化dp

斜率优化dp

  1. 当转移方程在决策点上表现为一次函数的形式时,考虑斜率优化
  2. 对决策点维护一个凸包,转移仅在凸包上可能取得最优解

矩阵加速dp

  1. 利用矩阵运算改写dp转移方程
  2. 利用矩阵快速幂优化转移过程
  3. 广义矩阵乘

动态DP

  1. 利用广义矩阵乘和线段树,优化带修改的矩阵乘法转移
posted @ 2025-10-28 18:34  FallingGardenia  阅读(0)  评论(0)    收藏  举报