题解:令f[i][j][0/1]表示前i个数有j段,最后一段是下降/上升的方案数很容易列出状态转移方程(已按x轴排序)f[i][j][0]=sigma(f[k][j][0]+f[k][j-1][1])(ka[i])f[i][j][1]=sigma(f[k][j][1]+f[k][j-1][1])(k...
分类:
其他好文 时间:
2014-12-21 00:43:20
阅读次数:
282
这道题和求字段和的要求就差一点,就是那个是一条链, 这个是个环,关于这么环,刚开始按照链那种方式推倒状态转移方程,但是没有写出来,后来看题解,才看到原来还是转化为普通的单链来做,好多题都是由不会的转化成简单的来做的。还得多思考啊,碰见题就不想动脑子,真是什么都学不了啊思路:一共有2种,首先是求单链最...
分类:
其他好文 时间:
2014-12-19 15:28:37
阅读次数:
124
题意:
给定一堆硬币,然后将他们分成两部分,使得两部分的差值最小;输出这个最小的差值。
思路:
想了好久都没想到一个合适的状态转移方程。后面看了别人的题解后,才知道可以转成背包问题求解。
我们将所有的硬币和的一半作为背包容量,然后将硬币的代价看成其本身的面值。然后背包中能装的最大容量
就是其中一个人分得硬币数。
代码如下:
#include
#inclu...
分类:
其他好文 时间:
2014-12-18 00:19:24
阅读次数:
163
我搜索了一下,找到了一篇很好的博客,讲的挺详细:链接。解析多重背包的最原始的状态转移方程:令 c[i] = min(num[i], j / v[i])f[i][j] = max(f[i-1][j-k*v[i]] + k*w[i]) (1 <= k <= c[i]) 这里的 k 是指取第 i 种物.....
分类:
编程语言 时间:
2014-12-15 23:18:14
阅读次数:
245
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1243分析:dp[i][j]表示前i个子弹去炸前j个恐怖分子得到的最大分。其实就是最长公共子序列加每个字母值为1,这里每个字母代表的值变化了一下。 状态转移方程:if(s1[i-1]==s2[j-1])d...
分类:
其他好文 时间:
2014-12-14 15:50:30
阅读次数:
166
动态规划题目(三)——最大连续乘积子串
1. 题目描述
给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积30.58=12是最大的,而且是连续的。
2. 动态规划求解
动态规划求解题目的时候最重要的是要找到状态转移方程!...
分类:
其他好文 时间:
2014-12-11 10:32:04
阅读次数:
128
解题思路:攒下的钱n相当于包的容量,然后是m个学校的申请费用,申请费用相当于每一个物品的消耗,得到offer的概率相当于每一个物品的价值。 因为要求的是至少得到一份0ffer的概率的最大概率,可以转化成一份offer都得不到的最小概率 即状态转移方程 f[v]=min(f[v],f[v-w[i]*(...
分类:
其他好文 时间:
2014-12-10 08:08:44
阅读次数:
178
解题思路:对于01背包的状态转移方程式f[v]=max(f[v],f[v-c[i]+w[i]]);其实01背包记录了每一个装法的背包值,但是在01背包中我们通常求的是最优解,即为取的是f[v],f[v-c[i]]+w[i]中的最大值,但是现在要求第k大的值,我们就分别用两个数组保留f[v]的前k个值...
分类:
其他好文 时间:
2014-12-09 08:08:56
阅读次数:
278
这道题是刚好装满的背包问题,刚好选取k个,状态转移方程为dp[i][j] = max( dp[i - 1][j], dp[i - 1][j - 1] + Li - Bi(j - 1) )dp[i][j] 表示从前 i 个男孩中选取 j 个的 Li 的最大值, 首先按照Bi 排一下序,这个是利用贪心的...
分类:
其他好文 时间:
2014-12-08 22:49:47
阅读次数:
295
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159题意:打怪,还有最后一级,忍耐度有限m,问在杀怪数量上限为s的情况下能否获取n经验而通关,且忍耐度花越少越好。分析:dp[i][j]表示打了数量为i花费忍耐度为j得到的最大经验值。状态转移方程:dp...
分类:
其他好文 时间:
2014-12-08 17:27:54
阅读次数:
211