2020.10.3 清北学堂 J2综合强化营 D3 动态规划笔记

动态规划

\(1\).常见问题

  • 做决策
  • 求最优解
  • 求方案数
  • 求可行解
  • 搜索不能用,贪心不敢用

判断技巧:

  • 看问题的类型
  • 看数据范围

\(2\).基本步骤

  • 设计状态
  • 确定初始状态
  • 推导状态转移方程

\((1)\). 设计状态(阶段)

主要思想:问什么,设什么从数据范围里猜测状态

思路:

  • 满状态求出的最优解就是答案——最优解问题
  • 状态即为答案,该状态是否能够达到即为该答案是否合法——可行解问题

\((2)\). 确定初始状态

常见\(DP\)初始状态的确定:

  • 线性\(DP\):左端点、右端点、边界外
  • 区间\(DP\):长度为 \(0/1/2\) ……
  • 背包\(DP\):背包大小为 \(0\)
  • 树形\(DP\):叶子节点、根节点
  • 状压\(DP\)\(0\) 状态或题目给定的起始状态

\((3)\). 推导状态转移方程

主要思想:小问题 -> 大问题
分情况讨论:考虑最后一步的决策。
常见\(DP\)归类:

  • 线性\(DP\):左 -> 右;右 -> 左
  • 区间\(DP\):短 -> 长
  • 背包\(DP\):小 -> 大
  • 树形\(DP\):上 -> 下;下 -> 上
  • 状压\(DP\)\(0\) 状态 -> 满状态;起始状态 -> 目标状态
  • 其余:记忆化搜索

\(3\).典型题型

\((1)\).线性\(DP\)

\(Problem\ 1\):最长不下降子序列

状态的表示: \(f[i]\) 表示以 \(i\) 为结尾的最长不下降子序列的长度。
状态转移方程:\(dp[i]=max(dp[i],dp[j]+1);\ (a[j]<a[i])\ (0<=j<i)\)
时间复杂度:\(O(n^2)\)

\(Problem\ 2\): [\(NOIP\)提高组][\(2013\)] 花匠
原题传送门

\(Problem\ 3\):[\(NOIP\)普及组][\(2018\)] 摆渡车
原题传送门

\(Problem\ 4\):[\(NOIP\)提高组][\(2014\)] 飞扬的小鸟
原题传送门

\((2)\).区间\(DP\)
主要问题:求某区间的最优解
阶段:总区间
子问题:某段区间

\(Problem\ 1\):石子归并

状态的表示:\(f[i][j]\) 表示合并自 \(i\)\(j\) 堆的代价

\(Problem\ 2\):凸多边形三角划分
给定一个具有N(N<50)个顶点的凸多边形以及每个顶点的权值。问如何把这个凸多边形划分成N-2个互不相交的三角形,从而使得这些三角形顶点的权值的乘积之和最小?

状态的表示:\(f[i][j]\) 表示从第 \(i\)\(j\) 个点进行三角划分后的最小乘积和。

状态的转移:\(f[i][j] = min\{f[i][k]+f[k][j]+v[i]*v[j]*v[k]\}\) //v[i]指i的权值

\((3)\).背包\(DP\)(分配类\(DP\)

基本类型:

  • \(01\) 背包(link
  • 完全背包(link
  • 多重背包(待更)

\(Problem\ 1\):[\(NOIP\)提高组][\(2015\)] 子串
原题传送门

\(Problem\ 2\):[\(NOIP\)普及组][\(2005\)] 采药
原题传送门

\(Problem\ 3\):[\(NOIP\)提高组][\(2018\)] 货币系统
原题传送门

\(Problem\ 4\):[\(NOIP\)普及组][\(2019\)] 纪念品
原题传送门

\(Problem\ 5\):机器分配
原题传送门

posted @ 2020-10-03 20:22  _pwl  阅读(280)  评论(0)    收藏  举报
1 2 3
4