Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dynamic Programming
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Zhijian Liu
February 01, 2015
Programming
65
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dynamic Programming
Zhijian Liu
February 01, 2015
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
190
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
すこし踏み込む CancellationToken
htkym
2
1.7k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
270
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
JIS keyboard support in Omarchy
lef237
0
110
Railsバージョンを4倍にした話
optim
0
350
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Writing Fast Ruby
sferik
630
63k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Accessibility Awareness
sabderemane
1
250
A Modern Web Designer's Workflow
chriscoyier
699
190k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The browser strikes back
jonoalderson
0
1.8k
How to make the Groovebox
asonas
2
2.5k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Transcript
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 动态规划 刘志健 上海交通大学 2015 年 2 月 1 日
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 矩阵乘法 fi = ∑M j=1 (coej × fi−j) 求 fN mod 1011 + 7 M ≤ 100, N ≤ 109
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 Quad Tiling 4 × N 的棋盘 用 1 × 2 的骨牌覆盖 求覆盖的方案数 mod 109 + 7 N ≤ 109
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 矩阵乘法 Relays N 个点、M 条边的无向带权图 求 S 到 T 恰好经过 K 条边的最短路径 N, M ≤ 100, K ≤ 106
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 单调队列 fi = minli≤j≤ri fj + ai li 和 ri 单调递增 求 fN N ≤ 107
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 Fence 篱笆由 N 个连续的木板构成,每块木板只能被染一次 有 K 个工人染色 第 i 个工人 要么不染色,要么染连续的一个区间 区间必须包括 posi,区间的最大长度为 leni 染一个木板赚 costi 求总共最多赚多少钱 N ≤ 20000, K ≤ 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 单调队列 Robotruck 有 N 个垃圾 第 i 个垃圾 坐标为 (xi, yi) 重量为 wi 有一个机器人,从小到大的顺序捡起所有垃圾并扔进垃圾桶 (0, 0) 机器人可以捡起几个一起扔掉,但是手上的垃圾总重量不能 超过 C 求机器人行走的最短总路程(曼哈顿距离) N ≤ 105, C ≤ 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 Quadratic Functions M 个操作 加入一个函数 f(x) = ax2 + bx + c (b = 2a) 给出一个 x,询问所有 f(x) 的最小值 M ≤ 105
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 斜率优化 fi = min1≤j<i(coei × fj − numj) 求 fN N ≤ 105
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 Works 公司有 C 元,经营 D 天,有 N 台机器 第 i 台机器 仅在 di 天出售,价格为 pi 卖出价格为 ri 工作一天的获利为 gi 限制 每天公司只能拥有一台电脑,买卖当天那台电脑不投入工作 问 D 天后最大获利 N ≤ 105
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 splay + 二分 cdq 分治
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 cdq 分治 一系列操作 包括修改和询问 修改可以累加 分治 对于操作序列分治 考虑前一半修改对后一半询问的贡献
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 cdq 分治 一系列操作 包括修改和询问 修改可以累加 分治 对于操作序列分治 考虑前一半修改对后一半询问的贡献
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 经典题目 在二维平面上 维护两种操作 插入一个点 询问一个左下角为 (0, 0) 的矩形中点的个数
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 分治 对于下标分治 考虑前一半对于后一半的贡献 具体 将前一半的决策点构建出凸包 后一半的询问按斜率排序 然后单调的扫一遍凸包
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 斜率优化 一般情况下斜率优化的实现 分治 对于下标分治 考虑前一半对于后一半的贡献 具体 将前一半的决策点构建出凸包 后一半的询问按斜率排序 然后单调的扫一遍凸包
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Ladder 序列 {sN} 是梯子序列 存在 x 使得 s1 ≤ s2 ≤ ... ≤ sx ≥ sx+1 ≥ ... ≥ sN 给定一个序列 {aN} Q 次询问 每次询问给定 L, R aL, ..., aR 是不是梯子序列 N, Q ≤ 105
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Bigger is Better N 根火柴 在不一定要全用完的情况下 求拼出的最大的 M 的倍数 N ≤ 100, M ≤ 3000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Big Bishops N × N 的棋盘上 有多少种放 K 个“象”的方法 使得他们两两不攻击 N ≤ 50
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Special Subsequence 数列 {aN} 是特殊的 |ai − ai−1| ≤ D 给定一个长度为 N 的数列 求最长的特殊子序列 N ≤ 105, D ≤ 108
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Mr. Kitayuta, the Treasure Hunter 数轴上 N 个位置有不同数量的金币 步骤 在 0 开始,第 1 步从 0 跳到 D 之后每次,假设之前一步的步长为 len 这一步可以向后跳 len − 1,len 或者 len + 1 问最多可以获得多少金币 N, D, 坐标范围 ≤ 30000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Persephone 用 N 根边长为 1 的木棍 拼出一个各边平行于坐标轴、最小外接矩形周长为 N 的简 单多边形 求满足条件的方案数 N ≤ 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 经典问题 N × M 的网格 每个格子黑白染色 求最大的黑色矩形的面积 N, M ≤ 1000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Unequalled Consumption 有 N 种糖果,每种糖果有一个重量 wi 定义 F(k) 总重量为 k 的方案数 询问 Q 次 每个询问给定 P 求最小的 k,使得 P ≤ F(k) N ≤ 5, wi ≤ 10, Q ≤ 10, P ≤ 1015
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Little Kings N × N 的棋盘上 有多少种放 K 个“王”的方法 使得他们两两不攻击 N ≤ 10
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Repair Depots 平面上 N 个点 要用 C 个半径相同的圆来覆盖 求最小半径 N ≤ 16
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Tiling Dominoes N × M 的棋盘 用 1 × 2 的骨牌覆盖 求有多少种方案 N × M < 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Little Knights N × N 的棋盘上 有多少种放 K 个“马”的方法 使得他们两两不攻击 N ≤ 10
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Connect 有一个 N × M 的迷宫 格子之间可能有墙,不能穿越 其中有偶数个物品 要求 物品两两配对,用路径连接 所有路径均不相交 求路径总长度的最小值 N ≤ 12, M ≤ 39
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Time Limit Exceeded 给定 N,M,{cN} 求有多少个序列 {aN} 满足限制 0 ≤ ai ≤ 2M ai 不是 ci 的倍数 ai and ai+1 = 0 N ≤ 50, M ≤ 15
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Autocomplete Strikes Back 有 N 个单词,要求从中选出 K 个输入 要求 每个单词要么完整输入 要么输入这个单词的一个前缀 这个前缀不是其他选中单词的前缀 求最少输入的字母数 N ≤ 4000, K ≤ 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Corporate Gifting 公司有 N 个员工,关系是一棵树 每个员工要给他的上司送礼物 礼物分为 $1, $2, ..., $N 要求每个员工送给上司的礼物不能和上司送出去的礼物一样 求整个公司总共送出礼物价格和的最小值 N ≤ 200000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Succession N 个点的树,点上有权值 求大小为 K 的联通块权值和的最大值 K ≤ N ≤ 100
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Vaccination Centers N 个点的树,有边权 要求在 N 个点中选择至多 P 个点,使总代价最小 总代价 选择节点 u 会增加 wu 的代价 每个节点 u 到最近的被选择的节点的距离会增加到代价中 N ≤ 30, P ≤ 10
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Password Remembering 给定 L ≤ R 求 [L, R] 中,有多少个数翻转后仍然在 [L, R] 中 L, R ≤ 264
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 x + R(x) = N 定义 R(x) x 数码倒过来得到的数 问有多少个 x 满足 x + R(x) = N N ≤ 1010000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Drive through MegaCity 一张网格图中,从整点 A 移动到整点 B 有 N 个矩形 限制 严格在矩形 i 内部的行驶速度是 ti 不被矩形覆盖的格子的行驶速度是 10 行驶路径必须和 x 轴平行或垂直 求 A 到 B 的最短时间 N ≤ 1000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Ticket to Ride N 个点,M 条边,要求选一些边使得给定的 4 对点分别联通 求最小的边权和 N ≤ 30, M ≤ 1000
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一些优化的介绍 一般的动态规划 状态压缩动态规划 树型动态规划 数位动态规划 一类特殊的动态规划 Shoveling Snow N × M 的方格中有 A、B、C、D 四个点 方格中的其他格子,可能是雪地、平地或障碍 要求将最少的雪地变成平地,使得给定的四个点可以通过平 地互相到达 N, M ≤ 20