Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dynamic Programming

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Dynamic Programming

Avatar for Zhijian Liu

Zhijian Liu

February 01, 2015

Other Decks in Programming

Transcript

  1. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 动态规划 刘志健 上海交通大学 2015 年 2 月 1 日
  2. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 矩阵乘法 fi = ∑M j=1 (coej × fi−j) 求 fN mod 1011 + 7 M ≤ 100, N ≤ 109
  3. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 Quad Tiling 4 × N 的棋盘 用 1 × 2 的骨牌覆盖 求覆盖的方案数 mod 109 + 7 N ≤ 109
  4. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 Relays N 个点、M 条边的无向带权图 求 S 到 T 恰好经过 K 条边的最短路径 N, M ≤ 100, K ≤ 106
  5. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 单调队列 fi = minli≤j≤ri fj + ai li 和 ri 单调递增 求 fN N ≤ 107
  6. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 Fence 篱笆由 N 个连续的木板构成,每块木板只能被染一次 有 K 个工人染色 第 i 个工人 要么不染色,要么染连续的一个区间 区间必须包括 posi,区间的最大长度为 leni 染一个木板赚 costi 求总共最多赚多少钱 N ≤ 20000, K ≤ 100
  7. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 Robotruck 有 N 个垃圾 第 i 个垃圾 坐标为 (xi, yi) 重量为 wi 有一个机器人,从小到大的顺序捡起所有垃圾并扔进垃圾桶 (0, 0) 机器人可以捡起几个一起扔掉,但是手上的垃圾总重量不能 超过 C 求机器人行走的最短总路程(曼哈顿距离) N ≤ 105, C ≤ 100
  8. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 Quadratic Functions M 个操作 加入一个函数 f(x) = ax2 + bx + c (b = 2a) 给出一个 x,询问所有 f(x) 的最小值 M ≤ 105
  9. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 斜率优化 fi = min1≤j<i(coei × fj − numj) 求 fN N ≤ 105
  10. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 Works 公司有 C 元,经营 D 天,有 N 台机器 第 i 台机器 仅在 di 天出售,价格为 pi 卖出价格为 ri 工作一天的获利为 gi 限制 每天公司只能拥有一台电脑,买卖当天那台电脑不投入工作 问 D 天后最大获利 N ≤ 105
  11. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 splay + 二分 cdq 分治
  12. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 cdq 分治 一系列操作 包括修改和询问 修改可以累加 分治 对于操作序列分治 考虑前一半修改对后一半询问的贡献
  13. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 cdq 分治 一系列操作 包括修改和询问 修改可以累加 分治 对于操作序列分治 考虑前一半修改对后一半询问的贡献
  14. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 经典题目 在二维平面上 维护两种操作 插入一个点 询问一个左下角为 (0, 0) 的矩形中点的个数
  15. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 分治 对于下标分治 考虑前一半对于后一半的贡献 具体 将前一半的决策点构建出凸包 后一半的询问按斜率排序 然后单调的扫一遍凸包
  16. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 分治 对于下标分治 考虑前一半对于后一半的贡献 具体 将前一半的决策点构建出凸包 后一半的询问按斜率排序 然后单调的扫一遍凸包
  17. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Ladder 序列 {sN} 是梯子序列 存在 x 使得 s1 ≤ s2 ≤ ... ≤ sx ≥ sx+1 ≥ ... ≥ sN 给定一个序列 {aN} Q 次询问 每次询问给定 L, R aL, ..., aR 是不是梯子序列 N, Q ≤ 105
  18. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Bigger is Better N 根火柴 在不一定要全用完的情况下 求拼出的最大的 M 的倍数 N ≤ 100, M ≤ 3000
  19. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Big Bishops N × N 的棋盘上 有多少种放 K 个“象”的方法 使得他们两两不攻击 N ≤ 50
  20. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Special Subsequence 数列 {aN} 是特殊的 |ai − ai−1| ≤ D 给定一个长度为 N 的数列 求最长的特殊子序列 N ≤ 105, D ≤ 108
  21. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Mr. Kitayuta, the Treasure Hunter 数轴上 N 个位置有不同数量的金币 步骤 在 0 开始,第 1 步从 0 跳到 D 之后每次,假设之前一步的步长为 len 这一步可以向后跳 len − 1,len 或者 len + 1 问最多可以获得多少金币 N, D, 坐标范围 ≤ 30000
  22. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Persephone 用 N 根边长为 1 的木棍 拼出一个各边平行于坐标轴、最小外接矩形周长为 N 的简 单多边形 求满足条件的方案数 N ≤ 100
  23. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 经典问题 N × M 的网格 每个格子黑白染色 求最大的黑色矩形的面积 N, M ≤ 1000
  24. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Unequalled Consumption 有 N 种糖果,每种糖果有一个重量 wi 定义 F(k) 总重量为 k 的方案数 询问 Q 次 每个询问给定 P 求最小的 k,使得 P ≤ F(k) N ≤ 5, wi ≤ 10, Q ≤ 10, P ≤ 1015
  25. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Little Kings N × N 的棋盘上 有多少种放 K 个“王”的方法 使得他们两两不攻击 N ≤ 10
  26. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Repair Depots 平面上 N 个点 要用 C 个半径相同的圆来覆盖 求最小半径 N ≤ 16
  27. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Tiling Dominoes N × M 的棋盘 用 1 × 2 的骨牌覆盖 求有多少种方案 N × M < 100
  28. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Little Knights N × N 的棋盘上 有多少种放 K 个“马”的方法 使得他们两两不攻击 N ≤ 10
  29. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Connect 有一个 N × M 的迷宫 格子之间可能有墙,不能穿越 其中有偶数个物品 要求 物品两两配对,用路径连接 所有路径均不相交 求路径总长度的最小值 N ≤ 12, M ≤ 39
  30. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Time Limit Exceeded 给定 N,M,{cN} 求有多少个序列 {aN} 满足限制 0 ≤ ai ≤ 2M ai 不是 ci 的倍数 ai and ai+1 = 0 N ≤ 50, M ≤ 15
  31. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Autocomplete Strikes Back 有 N 个单词,要求从中选出 K 个输入 要求 每个单词要么完整输入 要么输入这个单词的一个前缀 这个前缀不是其他选中单词的前缀 求最少输入的字母数 N ≤ 4000, K ≤ 100
  32. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Corporate Gifting 公司有 N 个员工,关系是一棵树 每个员工要给他的上司送礼物 礼物分为 $1, $2, ..., $N 要求每个员工送给上司的礼物不能和上司送出去的礼物一样 求整个公司总共送出礼物价格和的最小值 N ≤ 200000
  33. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Succession N 个点的树,点上有权值 求大小为 K 的联通块权值和的最大值 K ≤ N ≤ 100
  34. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Vaccination Centers N 个点的树,有边权 要求在 N 个点中选择至多 P 个点,使总代价最小 总代价 选择节点 u 会增加 wu 的代价 每个节点 u 到最近的被选择的节点的距离会增加到代价中 N ≤ 30, P ≤ 10
  35. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Password Remembering 给定 L ≤ R 求 [L, R] 中,有多少个数翻转后仍然在 [L, R] 中 L, R ≤ 264
  36. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 x + R(x) = N 定义 R(x) x 数码倒过来得到的数 问有多少个 x 满足 x + R(x) = N N ≤ 1010000
  37. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Drive through MegaCity 一张网格图中,从整点 A 移动到整点 B 有 N 个矩形 限制 严格在矩形 i 内部的行驶速度是 ti 不被矩形覆盖的格子的行驶速度是 10 行驶路径必须和 x 轴平行或垂直 求 A 到 B 的最短时间 N ≤ 1000
  38. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Ticket to Ride N 个点,M 条边,要求选一些边使得给定的 4 对点分别联通 求最小的边权和 N ≤ 30, M ≤ 1000
  39. . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Shoveling Snow N × M 的方格中有 A、B、C、D 四个点 方格中的其他格子,可能是雪地、平地或障碍 要求将最少的雪地变成平地,使得给定的四个点可以通过平 地互相到达 N, M ≤ 20