
动态规划——有向无环图(DAG)
文章平均质量分 80
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
例题9-1 城市里的间谍 UVa1025
1.题目描述:点击打开链接 2.解题思路:本题利用动态规划解决,时刻i和所在的车站j构成了一个状态,每个状态都有三种决策:(1)等待1分钟。(2)搭乘向右开的车(如果有)。(3)搭乘向左开的车(如果有)。如果用d(i,j)表示在时刻i,位于车站j时最少的等待时间,那么对于三种决策,可得到如下的状态转移方程: (1) d(i,j)=d(i+1,j)+1; (2) d(i,j)=min(d(i,原创 2015-02-11 12:26:48 · 1063 阅读 · 0 评论 -
动态规划小结——背包问题
背包问题是动态规划的经典问题,因此,有必要弄清跟背包问题的所有分析过程并熟练掌握各种类型的代码 一,完全背包问题 1.问题描述:有n种物品,每种物品有无限多个,第i个物品重量是wi,价值是vi,从这些物品中挑选总重量不超过W的物品,求出挑选物品价值的最大值。 限制条件:1≤n≤100,1≤wi,vi≤100,1≤W≤10000 2.解题思路:本题类似于“硬币问题”,硬币问题只要求凑够原创 2015-02-12 12:24:58 · 1289 阅读 · 0 评论 -
习题9-1 最长的滑雪路径 UVa10285
1.题目描述:点击打开链接 2.解题思路:本题利用DAG上最长路模型解决,将所有符合高度严格减小的相邻点保存,由于最多只有四个,用稀疏图的存储方法即可。 3.代码: #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include原创 2015-02-14 22:56:51 · 1261 阅读 · 2 评论 -
例题9-2 巴比伦塔 UVa437
1.题目描述:点击打开链接 2.解题思路:本题利用动态规划解决,由于影响决策的因素是顶面的尺寸,因此可以用二元组(a,b)表示“顶面尺寸为a,b这个状态”,由于每次都要求增加一个立方体后顶面的长和宽都会严格减小,因此这个图是一个DAG,可以利用DAG上的最长路算法解决。不过这里会遇到一个问题,由于a,b可能很大,不能直接用d(a,b)表示状态。此时可以利用间接表示法:用(idx,k)表示(a,b原创 2015-02-11 15:53:21 · 1531 阅读 · 0 评论 -
例题5.8 最大团 UVa11324
1.题目描述:点击打开链接 2.解题思路:本题利用缩点法+dp解决。根据题意可以发现,同一个SCC要么全部选择,要么全部都不选。如果将每个SCC都缩成一个点,而且定义该点的权值就是这个SCC的结点数。那么问题实际上就转化为求一条权值最大的路径。因为缩点后的图是一张DAG,因此可以利用dp加以解决。 3.代码: #include #include #include #include #incl原创 2015-10-01 23:56:01 · 464 阅读 · 0 评论