背包
- 01背包
- 无穷背包
- 多重背包
- 有限制背包
- 分组背包
- 树上背包
- bitset优化
基本模型
- 最长公共子序列:普通 \(O(n^2)\) / 无重复元素 \(O(n \log n)\)
- 最长上升子序列:\(O(n \log(n))\)
- 基于位置设计的规划规划
- 基于值设计的动态规划
- 将限制条件作为状态
- 基于dp求前若干优解(最大、次大等)
区间dp
- 基于区间设计的状态转移 \(dp[l][r]\)
- 对于不关心区间构造只关心区间长度的情况,可以压缩为一个维度
树形dp
- 树形dp的基本思想1: 考虑父子间的转移关系
- 树形dp的基本思想2: 考虑将子树所在集合并入当前点所在集合
- 换根
状压dp
- 利用二进制数位表示状态压缩
- 利用数位转换进行更高进制状态压缩
- 子集枚举
- 子集和
数位dp
- 基于数位的dp方法:记忆化搜索
- 根据题目确定从低位到高位或从高位到低位。具体应分析无后效性。
DAG上dp
- 利用拓扑排序进行DAG上的dp转移
数据结构优化dp
- 二分优化dp
- 单调队列优化dp
- 线段树优化dp
斜率优化dp
- 当转移方程在决策点上表现为一次函数的形式时,考虑斜率优化
- 对决策点维护一个凸包,转移仅在凸包上可能取得最优解
矩阵加速dp
- 利用矩阵运算改写dp转移方程
- 利用矩阵快速幂优化转移过程
- 广义矩阵乘
动态DP
- 利用广义矩阵乘和线段树,优化带修改的矩阵乘法转移
posted @
2025-10-28 18:34
FallingGardenia
阅读(
0)
评论()
收藏
举报