[算法学习笔记] 动态规划合集

SXqwq's Library / 2023-09-02 / 原文

动态规划本质上是 状态的合并。我们用一个或多个维度的数组来表示出题目所有的状态。在考虑压缩状态的时候想想压缩掉这一维,其他的维度可以表示题目所有的状态呢?会不会出现不该合并的合并到一起呢?

对于优化,我们一般先写出朴素状态转移方程,再考虑压缩状态,单调队列,线段树等优化。

对于一些套路性问题,例如背包模型,在套用的时候也应当考虑状态设计是否出现问题。

对于一些状态很复杂的题目,直接记忆化搜索。

下面给出目前学习到的动态规划。


  • 动态规划入门:0基础带你入门dp

  • 背包模型

    • 背包模型总结:背包模型
    • 多重背包下的二进制分组优化:算法学习笔记 二进制拆分
  • 区间dp:合并石子模型:算法学习笔记 区间dp之合并石子模型

  • 树上 dp,常用记忆化搜索解决

    • 前置知识:树的常用操作:树的常用操作

    • 树上 dp 解题报告:树上dp

    • 延伸:换根 dp:换根dp

  • 状压 dp:暴力的枚举所有状态

    • 状压 dp 解题报告 状压 dp
  • 优化

    • 压缩状态

    • 单调队列:单调队列优化 dp


以上目录为集中处理的动态规划类型,还有一些零散的刷题笔记,这里不再列举。