ch9
文章平均质量分 97
紫书的第9章
蹲坑看手机
已搬家
展开
-
UVA1625 Color Length(动态规划LCS)
本题Vjudge链接 题意:给你两个长度分别为n、m(1≤n,m≤5000)n、m(1 \le n, m \le 5000)n、m(1≤n,m≤5000)的字符串,让你求出组成新串的最小l(c)l(c)l(c)(具体组成方式看原题) 个人感觉这题很难,一度怀疑自己的能力和紫书题目的难易分布,最后费了九牛二虎之力终于想通为什么了,所以本文可能会花大篇幅来解释这题是怎么想的 思路:一开始看着有点LCS的影子,想着想着就写出了DP的递归函数,但是却死活想不出下一步怎么递归,即如下代码的[][][]片段 int原创 2020-09-10 17:59:59 · 154 阅读 · 0 评论 -
UVA11584 Partitioning by Palindromes(动态规划)
本题vjudge链接 题意:给你一个字符串,让你求分割成最少回文串的数量,比如racecar最少就是1,fastcar就是7,aaadbccb就是3 思路: 说实话,不放到动态规划的专题我可能都不知道怎么做 提供一种比较好想的思路:记一个长度为lll的字符串最大的分割数量就是lll,如果说第lll个字符和第l−1l - 1l−1个字符拼成的字符串是回文串,则分割数量就可以减少,即将l−1l - 1l−1 ~ lll的字符串看成一个字符,固分割数减一,以此类推往前找能够看成单个字符的回文串来求出长度原创 2020-08-31 19:53:10 · 109 阅读 · 0 评论 -
UVA11400 Lighting System Design(动态规划)
本题vjudge链接 题意:你要设计一个一共需要n种不同电压灯泡的照明系统,不同种类的灯泡用不同的电源,同一种灯泡必须要用同一个电源,现在为了省钱,在亮度不减的前提下,可以用电压高的灯泡来换电压低的灯泡减小费用,现给你每种灯泡的电压V,电源费用K,每个灯泡的费用C,每种灯泡所需要的数量L,问你计算出最优的方案的费用 思路: 为了减少电压之间的比较可以对灯泡进行从小到大的排序,这样的话就可以默认是下标大的换下标小的 注意到对于一种灯泡,要不就全换掉,要不就全部都不换,不可能说最优的方案是当前这种灯泡原创 2020-08-31 19:51:15 · 137 阅读 · 0 评论 -
UVA1025 A Spy in the Metro(动态规划)
本题vjudge链接 本篇是由DP总结中搬出的,目的是记录刷题进度 大致题意:一个线性的地铁,有n(2≤n≤50)n(2 \le n \le 50)n(2≤n≤50)个站,目标是在T(0≤T≤200)T(0 \le T \le 200)T(0≤T≤200)时刻从1号站到n号站,注是规定刚好T时刻,不是在T时刻之前也不是在T时刻之后,从1号点出发,可以在途中转乘,问你最少的中途等车时间 第i站到第i + 1站需要花的时间为tit_iti 有M1(M1≤50)M1(M1 \le 50)M1(M1≤50)个原创 2020-08-21 21:50:07 · 106 阅读 · 0 评论 -
UVA116 Unidirectional TSP(动态规划)
本题vjudge链接 大致题意:有个m×nm \times nm×n矩阵,对于每个点你可以向直接向右、右上,右下走,第1行的上一行是第m行,第m行的下一行是第1行,问你从第一列的某一行出发,到达最后一列所经历的点的和最小是多少,并且打印出每一列的行号,如果有多解,输出字典序最小的 简单的分析: 可以看出是一个数塔问题的变种 书中说这种问题叫做多阶段决策问题中的一类——多阶段图的最短路问题,所谓多阶段图按书中说法就是图中结点可以划分成若干个阶段 这里我的理解就是原数塔问题也可以说是一个DAG,而这题原创 2020-08-21 21:48:57 · 131 阅读 · 0 评论 -
UVA437 The Tower of Babylon(动态规划)
本题vjudge链接 题意:给你n种有无数个的立方体,现在让你用这些立方体堆一个塔,每个立方体的底面长宽都要严格小于下面立方体的底面长宽,问你最高能堆多高 简单的分析 能看得出来是一个矩形嵌套的变种问题,用DAG模型建立来做会非常好码代码 一种立方体有三种摆放方式,假设一个立方体的长宽高为a、b、c,则三种摆放方式分别是以a、b、c为高的摆放方式,固一种立方体可以看成三个立方体 下面就是建立DAG了,如果一个立方体的底面长宽严格大于另一个底面长宽的立方体则连一条有向边过去 最后就DP就是求从某个节点出发原创 2020-08-21 21:47:34 · 84 阅读 · 0 评论 -
UVA12563 Jin Ge Jin Qu hao(01背包)
本题vjudge链接 大致题意:在KTV里,如果还剩下1秒的时间,则可以点一首更长的歌,因为他会播放完最后一首歌才停止,现在给你剩下的时间mmm和n(n≤50)n(n \le 50)n(n≤50)首歌,每首歌的时长t1,t2,t3……tnt_1, t_2, t_3 ……t_nt1,t2,t3……tn,现让你算出在剩余的时间内能唱的歌的最大数量,然后利用空出来的时间最后再点一首长为678秒的歌,输出能唱的最大数量,对应的时间 简单的分析: 题目中说最后会点一首678秒的歌来延长时间,则策略就是计算原创 2020-08-21 21:42:47 · 89 阅读 · 0 评论