DAG上DP
其实我感觉差不多啊。。。嘶~
不都是DP么?
DAG即有向无环图
这里举出两经典的DAG模型,嵌套矩形和硬币问题
嵌套矩形(不固定起点最长路及其字典序)
描述
有n个矩形,每个矩形可以用 (a,b) 来描述,表示长和宽 矩形 X(a,b) 可以嵌套在矩形 Y(c,d) 中,当且仅当 a<c,b<d
或者 b<c,a<d(旋转90度) 例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中
你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内分析 我们就是在求DAG上的不固定起点的最长路径
硬币问题(固定终点的最长路和最短路)
描述
有 n 种硬币,面值分别为V1, V2······Vn,每种都有无限多 给定非负整数 S ,可以选用多少个硬币,使得面值之和恰好为S?
输出硬币数目的最小值和最大值分析
看上去和嵌套矩形问题很不一样,但本题的本质也是DAG上的路径问题 将每种面值看作一个节点,设初始状态为S,目标状态为0 若当前在状态
i,每使用一个硬币 j,状态便转移到i - Vj
以上都是课件,(–__–)哈哈哈
其实也没什么好说的,书读百遍,其义自见嘛~
那就gang题目吧
-
A题
dp[i]表示i节点的花费,dp[i] = max(dp[j] + a[i], dp[i]) -
B题
迪杰斯特拉跑一遍求最短路,dp来求