
第九章 动态规划初步(例题)
aozil_yang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
例题9-8 UVA 1625 Color Length(DP)
思路:令dp[i][j],表示第一个字符串走到i 位置,第二个位置走到j位置,当前的最小费用!那么直接双重循环进行转移即可!如果i 不等于0,那么可以有dp[i][j] = min(dp[i-1][j] + c[i-1][j])如果j 不等于0,那么可以有dp[i][j] = min(dp[i][j-1] + c[i][j-1])其中 c[i][j]表示 字符串1 走到i原创 2016-10-09 17:40:50 · 300 阅读 · 0 评论 -
UVA 1220 Party at Hali-Bula (树形dp--树的最大独立集)
大体题意:给你n 个人的上司和下属的关系,让你挑尽可能多的人来参加聚会,参加聚会的条件是 任意两个人不能具有直接的上司下属的关系,求最大人数?思路:树形dp -- 树的最大独立集问题:只不过多了一个条件,问是否唯一:解法很容易想到了:令dp[i][0]表示 第i 个人 如果不选择的话,最大人数, 令f[i][0] 为第i 个人不选择的话,解是否唯一。同样的 令dp原创 2016-10-18 16:24:55 · 436 阅读 · 0 评论 -
UVA - 12186 Another Crisis (树形dp)
大体题意:有n 个员工,告诉你这n 个员工的直系老板,0号是大老板,现在员工们要求提出涨工资的建议,但是一个员工提建议必须他的不少于T%的员工给他提建议,他才会提出建议!求让大老板0号 收到建议 ,至少需要几个没有属下的员工?思路:树形DP,令dp[i]表示要让i 员工提出自己的建议,需要多少名工人?那么答案就是dp[0],那么没有属下的员工k,显然dp[k] = 1,在回溯的过程原创 2016-10-17 18:15:42 · 431 阅读 · 0 评论 -
UVA 11584 Partitioning by Palindromes 划分成回文串(DP + 预处理)
大大体题意:给你n个字符串,求出能把这个字符串划分成最少几个回文串?思路:很简单的dp,做了好几遍了,今天才优化到n^2的复杂度= =!令dp[i],表示从位置1到位置i 最少划分的回文串数!那么直接二重循环,如果j~i是回文串的化,那么dp[i] = min(dp[i],dp[j-1]+1);判断j~i是否回文直接预处理即可!方法时枚举回文串的中心,分奇数偶数讨论以下原创 2016-09-30 08:30:01 · 468 阅读 · 0 评论 -
UVA 11400 Lighting System Design 照明系统设计(DP)
大体题意:给你n 种数量无限的灯,告诉你每个灯的电压,电源费用,需要的数量和每个灯泡的价格!你可以把一些灯泡换成更高电压的灯泡,求最少花费?思路:题目中说到 通过的电流是一样的,因此电压越高,功率越大,如果换某个灯泡时,必须全部换掉,因为换了其中一个 价格便宜了,肯定全部换掉最划算!因此转移就很好想了:先给电压排序!然后枚举换哪一个灯泡,在枚举这个灯泡前面的最优解 + 换灯泡原创 2016-09-30 07:50:44 · 483 阅读 · 0 评论 -
例题9-5 UVA 12563 Jin Ge Jin Qu [h]ao (01 背包)
题意不说了 说的很清楚!思路:留出1秒唱时长为678秒的劲歌金曲!剩下的t - 1秒就是在n首歌曲中 选择使得 总时长最大!每首歌肯定选一次,每首歌的时间就是重量!01背包变形,就是在重量不超过t-1的情况下 选择的数量最多!因为最后的情况会输出选择了几首歌!所以方程可以这么写:dp[j] = max(dp[j],dp[j-w[i]]+1);最后从t-1到0原创 2016-03-18 10:37:09 · 807 阅读 · 0 评论 -
UVA 116 Unidirectional TSP单向TSP(DP)
大体题意:给你一个n * m的数字矩阵,你从第一列任一行出发,到最后一列,只能横着走一个,斜上走一个,斜下走一个,求和最小值,并且行号的字典序最小?思路:令Dp[i][j]表示从矩阵 i,j位置出发,到最后一列的权值之和的最小值!那么直接根据路的规则向前转移即可!因为输出要字典序最小,所以先把能走的行号放到数组里,拍个序,保证字典序最小,在求最小值,然后利用链表 next[i]原创 2016-09-28 23:04:12 · 445 阅读 · 0 评论 -
例题9-3 UVA - 1347 Tour 旅行(DP)
大体题意:给你n 个点 已经按照x坐标排了序,问从左边的点一条线的走到右边的点并且一条线的返回起点,除了起点和终点外其余的点各走一次!思路:令dp[i][j]表示1~ max(i,j)都走过了,并且第一个人在i位置,第二个人在j位置,假设i > j。那么1,2,3,,,,i位置都是走过的,第一个人可以走到i + 1,第二个人不动, 或者第二个人走到i+1,第一个人不动。那么转原创 2016-07-06 11:48:44 · 523 阅读 · 0 评论 -
例题9-2 UVA - 437 The Tower of Babylon 巴比伦塔(DGA-DP)(已更新)
大体题意:给你n种立方体,每种都无限个,要求选择一些立方体使得高度最大,并且满足越靠上的立方体长宽严格小于下面的!每个立方体可以旋转!输出最大高度!思路:可以把立方体的属性存到Node结构体里,因为一个立方体就可以有6种状态,很少,可以手写进Node里。然后按照面积排序!最后按照DGA形式 求最长长度!if (nod[j].x dp[i] = max(dp[i],d原创 2016-05-04 23:56:53 · 547 阅读 · 0 评论 -
UVA 1025 A Spy in the Metro 城市里的间谍(DP)
大体题意:给你n 个车站,你从1站出发, 你要在恰好T秒的时间会见在n 站的一个间谍,为了防止被抓住,你必须尽可能的在车上,告诉你每个车的出发时间和起始位置,求最少等车的时间!思路:简单记录一下思路,书上说的很明确了!可以令dp[i][j],表示你当前在i 时间 , 在j 车站还需要等待的时间!那么有三个决策:1.等一分钟!2.如果能向右走,向右走!3.如果能向原创 2016-09-28 16:53:24 · 304 阅读 · 0 评论 -
UVA 1331 Minimax Triangulation 最大面积最小的三角剖分(区间dp--记忆化搜索)
大大体题意:给你一个n 个点的多边形,输入按着沿着边输入(不用排序),要求分成n-2个三角形,使得这n-2个三角形中最大的三角形的面积尽可能小,输出最小面积!思路:区间dp思想!令dp[i][j] 是用第i 个点到第j 个点能组成最大三角形最小面积!然后枚举i 和j 之间的点作为 第三个点,然后分成两部分 i~k 和k~j 继续寻找!不过有坑:需要注意,如果有个点凹进去原创 2016-10-13 11:40:57 · 631 阅读 · 0 评论 -
DAG模型——硬币问题
大体题意:有n种硬币,面值分别为V1,V2,V3,,,VN每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S? 输出硬币数目的最小值和最大值思路:这是一个DAG模型,相当于从起点S出发 到终点0的最长路和最短路,每使用一个硬币Vj,状态就从i转移到了i-Vj用dp[i]记录状态i 到终点0的最短/长路!记忆化搜索的形式:#include #i原创 2016-09-26 22:40:20 · 554 阅读 · 0 评论 -
例题9-10 UVA 1626 Brackets sequence (dp递推 || 记忆化搜索)
大体题意:括号匹配问题,要求添加尽可能少的括号使得括号匹配 ,其中空括号 是匹配的,括号有[]和()两种!思路:dp思想:令dp[i][j]表示字符串i位置到j位置 最少添加的括号数量!两种方法 递推和 记忆化搜索思路是一样的,说下整体思路:如果i和j 这两个位置能匹配的话,那么转移就是ans = min {dp[i+1][j-1]}然后在类似于最优三角剖分的方法,原创 2016-10-09 22:44:53 · 501 阅读 · 0 评论 -
例题9-9 UVA 10003 Cutting Sticks 切木棍(最优三角剖分 || 区间dp )
大体题意:给你一个长度为L 的木棍,木棍上有n(n 思路:用a[i] 记录第i 个结点的位置!并把a[0] = 0,a[n+1] = L,这样做就可以处理边界情况了!写个dp(i,j)函数记忆话搜索!因为i j 之间必须有东西才可以处理嘛,所以直接判断i >= j-1的话,直接return 0;因为是记忆话搜索 所以 如果d[i][j]如果不为-1的话 直接retu原创 2016-04-30 19:07:58 · 621 阅读 · 0 评论 -
最优矩阵链乘(动态规划dp)POJ 1651 Multiplication Puzzle
大体题意:一个n*m的矩阵由n行m列共n*m排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个n*m的矩阵乘m*p的矩阵,运算量为n*m*p。矩阵乘法不满足分配律,但满足结合律。因此A*B*C既可以按顺序(A*B)*C也可以按A*(B*C)来进行。假设A、B、C分别是2*3、3*4、4*5的,则(A*B)*C运算量是2*3*4+2*4*5=64,A*(B*C)的运算原创 2016-10-09 20:18:11 · 1717 阅读 · 0 评论 -
例题9-14 UVA 1218 Perfect Service 完美的服务(树形dp)
大体题意:给你一个n 个结点的树状结构,要求把一些结点变成服务器,使得每个非服务器结点恰好和一个服务器结点相连,求最少的服务器结点?思路:树形dp思想看了分析才懂的!简单记录一下吧:令dp[i][0] 表示 i 结点是服务器的话,最小的服务器数量!令dp[i][1] 表示 i 结点不是服务器,但是i的父亲是服务器的 最小服务器数量!令dp[i][2] 表示i 结点不是服原创 2016-10-20 09:28:25 · 552 阅读 · 0 评论