DP
文章平均质量分 79
韦我独尊-德天独厚
这个作者很懒,什么都没留下…
展开
-
UVA437 The Tower of Babylon 动态规划
题意:给你N种立方体,每种立方体个数不限,让你堆塔,求塔最大高度,堆塔的条件是 每一个立方体的长和宽 必须严格大于它下面的立方体的长和宽,因为每个立方体个数无限,所以必须要进行排序了,不需要按照堆塔的条件来排序,可以按照底面积的大小来排,原因很简单,还有因为立方体个数无限,外加堆塔条件限制,其实就是每一种立方体又可以演变成 六种立方体,因为没有固定 哪个是高 宽 长,都处理好以后,一看就是一个原创 2014-02-11 20:46:28 · 942 阅读 · 0 评论 -
HDU3555 Bomb 数位DP
过题率一点都不高,看着有点吓人,刚开始想不出来,网上的代码思路很相似,都是dp[i][j],一维代表位数二维代表状态,状态分三种,含49,不含49,不含49但是以9开头,从一开始我的想法跟这个就不搭边啊,后来自己沿着原来的思路继续想下去,发现也是可以的,而且感觉比分三种状态的要好理解,当然还有一种记忆化搜索的更好理解我的思路;dp[i][j],以j开头的i位数 不含49的个数,这样预原创 2014-03-11 21:40:29 · 716 阅读 · 0 评论 -
ZOJ 2949 Coins of Luck 概率DP
题意:给你 两种泡面 N包,然后你扔硬币,正面朝上吃第一种,反面呢 吃第二种,有任意一种吃完时 就不需要跑硬币了,求停止抛硬币的 期望,这题目做出来具有运气成分,首先想了很久,题目暴力肯定不行,我想先对 概率进行DP,然后乘以次数得到期望,但是想了很久不行我对第二个案例进行了 分析,也就是N=2的时候,首先 可以想得到在合理的 DP方程肯定 最基础的形态 肯定是 DP[I][J] =原创 2014-03-30 20:38:21 · 810 阅读 · 0 评论 -
UVA10069 Distinct Subsequences 超级大数 + DP
一万多的代码,看着好乱,有点吓人,JAVA还没学会,不然就很短了题意是给你一个母串一个子串,问你子串在母串中出现的次数,一个字母可以用多次,但是没找到一个 子串它的元素 下标组合必须不同比如母串babgbag 子串bag,你可以找到 五个,rabbbitrabbit你可以找到三个总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen原创 2014-03-28 19:25:01 · 848 阅读 · 0 评论 -
ZOJ2955 Interesting Dart Game 鸽巢原理优化 + 动规
看得出是一个以代价为1的背包,但是一开始不知道怎么优化,不愧是学长啊,居然做出来了,后来看了一下他们的思路,他们是优化到了10000以后进行背包的,后来看了他们的思路 自己有了新的想法,跟他们的优化不同,我对数组从小到大排序,然后利用鸽巢原理进行优化在鸽巢原理的介绍里面,有例题介绍:设a1,a2,a3,……am是正整数的序列,试证明至少存在正数k和l,1构造一个序列s1=a1,原创 2014-03-31 20:19:15 · 1146 阅读 · 3 评论 -
POJ2336 Ferry Loading II 贪心动规
题意:有m辆车,每次最多运n辆过河,过河过去需要t时间回来需要t时间,m辆车一开始并不是都在岸边的,给出m辆车抵达岸边的时间(只有车抵达河岸才能过河),问使得所有车辆过河所需要的最少次数 跟 最早时间分析:一开始看题目可能觉得有两个最优解,最少次数跟最早时间,次数最少猜测一下,m%n==0则刚好为m/n次 否则 为m/n+1次,然后考虑最早时间,时间要最早 其实就是最后一辆车最早过原创 2014-05-07 22:17:38 · 1074 阅读 · 0 评论 -
UESTC1307 windy数 数位DP
windy定义了一种windy数。 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?dp[i][j],代表j开头的i位数字,跟前面几道 差不多,然后枚举递推各个数位上数字关系,感觉 比前面做的还简单,大差不差 ,因为没有前导0,所以从高位开始搞起比较方便总是做算法,不如来个陶冶情操的文章原创 2014-03-26 22:03:47 · 757 阅读 · 0 评论 -
ZOJ3632 线段树+DP
买西瓜吃,每个西瓜有两个参数,一个是p代表价格,一个是t代表能吃几天,要求n天每天都能吃西瓜,而且如果你今天买了,以前买的还没吃完 那么都得扔了,求最小花费,还真想不到用线段树+DP,最后看了一下别人的标题,想了一下,DP方程挺好推的,线段树也只是单点查询,#include#include#include#include#include#include//#include原创 2014-07-04 21:36:31 · 743 阅读 · 0 评论 -
ZOJ1093 动态规划
给你n中砖块,有三维长宽高,每种无限取用,叠加的条件是上一块的长宽必须严格大于下一块的长宽,求叠加最高高度,思路:把每种砖块最终按照放置方法可以转为六种,然后对于长和宽进行排序,这样就是LIS的变向问题了#include#include#include#include#include#include#include#include#include#includ原创 2014-06-20 20:23:50 · 1002 阅读 · 0 评论 -
ZOJ1100 状压DP +深搜
记得做过类似于这类题目是可以用组合数学方法来解决的,可惜淡忘了,也找不到了,看了网上的也有人提到过可以用组合公式解决,可是没人做,都是用了状压DP的方法,这个状压很难讲清楚吧,推荐两篇第一遍大体看看这个:http://blog.csdn.net/crux_d/article/details/2206736想要具体实现的时候看看他的解析:http://blog.csdn.net/ya原创 2014-06-21 15:31:29 · 1094 阅读 · 0 评论 -
HDU3652 B-number 数位DP
昨晚做了一个晚上,自己也举了一些案例都过了,结果一直WA,终于搞定了,这题应该是去年网络赛的题目,有点难,看看其他人都是开三维来做的这里我是开了 四维,不够简洁,但是我觉得比较好理解,记得曾经某位学长 给我讲题目的时候 开了六维,dp[i][j][k][l],i位数j开头是否含有13 k=0?1 (mod) 13的值 l,这个就是DP数组的含义接下来就是对DP数组的预处理了原创 2014-03-05 15:53:07 · 897 阅读 · 0 评论 -
HDU2089 不要62 数位DP
数位DP第一道题目,昨晚是做了4个小时,参考了一下方程,最后搞出来了 ,但是很乱 ,先给上昨天的代码#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long#def原创 2014-03-04 19:31:32 · 802 阅读 · 0 评论 -
UVA10404 Bachet's Game
这题目做的有些较劲,题意:给你n个石头,Stan跟Ollie按顺序取,Stan先手,题目会给你m种取法,每次取石头的数目 必须从这m种中选取一个,假设Stan 和 Ollie 每次的取石头数目 都是最完美的意思就是 输赢一开始就因为 取法 和 石头数目决定了,不会因为人为原因而影响结果这题目一看,个人 认为是一道博弈的问题,所以开始较劲了,各种寻找sg值的方法,不停的去推去寻找 必败点原创 2014-02-12 21:45:37 · 860 阅读 · 0 评论 -
POJ3280 Cheapest Palindrome 区间DP
给你一个字符串,把它变成回文串,可以添加字母也可以删除其中的字母,对于每一个字母添加和删除需要不同的花费,问使得这个字符串变成回文串最少需要花多少区间DP,从后向前推,如果区间[i,j] s[i] == s[j],那么dp[i][j] = dp[i+1][j-1], 如果不想等 那么要么是加上一个 或者删除一个,在这里举个例子把,当推到abcb的时候,操作无非两种 删除a或者加上一个a,这两原创 2014-02-25 22:31:53 · 748 阅读 · 0 评论 -
POJ3661 Running 动规
一个人跑步,n分钟,每分钟跑得距离不同并给出了,有一个累的程度,每跑一分钟累的程度+1,当这个值到达m时,必须休息,而且必须休息到疲劳度为0才能继续,每休息一分钟疲劳度-1,当他疲劳度没满时,他也可以选择休息,求n分钟疲劳度为0的时候能跑的最远距离,可以用二维DP解决,dp[i][j]表示 第i分钟疲劳度为j时的最大距离,最终解就是dp[n][0];第一个方程 :dp[i][j] = dp原创 2014-02-26 20:20:35 · 862 阅读 · 0 评论 -
UVA10051 Tower of Cubes
一道跟LIS比较像的题目,但是只是类似,题意:给你一些立方体,按重量有小到达给出,每个立方体有六个面,并给出这六个面的颜色,现在让你堆立方体,每一个立方体必须比它下面的轻,而且两个接触的面必须颜色相同,思路,每一个立方体其实是有六种状态的,只要记录每一个立方体的上下两个面的状态即可,还要记录此时的上表面下表面是原来的上下左右前后面的哪一面和 它是第几个立方体,统计好所有立方体的状态直接开始 寻原创 2014-02-13 21:52:07 · 800 阅读 · 0 评论 -
UVA10534 Wavio Sequence
题意:给你一串序列,让你序列中找出 类似这样的 1 2 3 4 5 4 3 2 1 的最大长度的子串,子串特性:1长度可以写成2*n+1,其中前n+1的序列是严格上升的,后n+1个是严格递减的;一开始我的思路是这样的:第一遍先dp一遍,找出所有的递增序列,并且记录上升序列最后一个元素的位置,第二遍 从这些上升序列的最后一个元素的位置开始寻找,若能找到一个长度与上升相等的 下降序列就停原创 2014-02-13 19:22:12 · 751 阅读 · 0 评论 -
UVA 348 Optimal Array Multiplication Sequence 区间DP
题意:给你n个矩阵,让你连乘,怎么样处理先乘哪两个后乘哪两个 会导致计算次数最少,简单线性数学知识:矩阵乘法的 运算次数是跟乘的顺序有关的,并且输出来这个数据输出是比较繁琐的,还好前面做过几道 都是类似于记录路径 并输出的,所以很熟练的用递归解决了这是一道矩阵连乘问题,区间DP,典型的经典例子 有详细介绍的博客 :http://www.cnblogs.com/liushang041原创 2014-02-14 20:26:29 · 1008 阅读 · 0 评论 -
HDU2476 String painter 区间DP
给你两个字符串s1,s2,问 把s1变成s2最少需要几步?变的要求是连续的一段一起变化,语文不好表达不清楚可以看看这个博客对于案例的解释http://blog.csdn.net/libin56842/article/details/9708807给出两个串s1和s2,一次只能将一个区间刷一次,问最少几次能让s1=s2例如zzzzzfzzzzz,长度为11,我们就将下原创 2014-02-27 20:24:53 · 1105 阅读 · 0 评论 -
HDU4283 You Are the One 有点难的区间DP
有N个人要出场,每个人有个不爽的值,如果他第i个出场 那么 他的愤怒值为 num[i]*(i-1),求怎么样排出场顺序,能使得总得愤怒值最小dp[i][j] 当然表示第i个人 到第j个人这个区间的最小愤怒值,这里要注意的是 只对这个区间进行考虑, 比如 dp[2][5],只需要考虑2到5号人的出场安排,此区间前面的不需要去考虑解析什么的 绝对是 爱神 的比较给力 也比较清晰,咱原创 2014-03-02 21:00:42 · 819 阅读 · 0 评论 -
POJ1080 Human Gene Functions 动态规划 LCS的变形
题意读了半年,唉,给你两串字符,然后长度不同,你可以用‘-’把它们补成相同长度,补在哪里取决于得分,它会给你一个得分表,问你最大得分跟LCS很像的DP数组 dp[i][j]表示第一个字符串取第i个元素第二个字符串取第三个元素,然后再预处理一个得分表加上即可得分表:score['A']['A'] = score['C']['C'] = score['G']['G'] = scor原创 2014-06-22 10:15:54 · 764 阅读 · 0 评论 -
HDU4570 Multi-bit Trie 区间DP
题目意思看不懂,看题解看了题意 转自 :http://blog.csdn.net/libin56842/article/details/9703457:题意:这题题意确实有点难懂,起码对于我这个英语渣渣来说是这样,于是去别人的博客看了下题目意思,归纳起来如下:给出一个长度为n的数列,将其分成若干段,要求最小,其中ai是每一段数列的第一项,bi是每一段的长度,l为将数列分成l原创 2014-07-14 21:21:55 · 682 阅读 · 0 评论 -
Code Forces 414B 挺不错的递推动规
http://codeforces.com/problemset/problem/414/B题目挺不错的,留个纪念,活动脑筋不错的题目#include#include#include#include#include#include#include#include#include#include#include#include#include#de原创 2014-07-15 21:05:57 · 718 阅读 · 0 评论 -
CodeForces 398B 概率DP 记忆化搜索
题目:http://codeforces.com/contest/398/problem/B有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了很久也没有想出来,有点无从下手的感觉,最后还是尝试了一下记忆化搜索,以dp[0][0]为边界,dp[x][y]代表当前有x行y列没有彩色的 瓷砖,搜索起来思路还是很清晰的,可惜最后那个 算期原创 2014-11-05 19:59:52 · 850 阅读 · 0 评论 -
CodeForces 374C 记忆化搜索
题目题意:Inna喜欢Dima,所以他希望在一张n * m的 每个单元格印有'D'或者'I'或者‘M’或者‘A’ 的桌子上 尽量多的走出 某个路径 中包含DIMA 这个单词数量最多,必须从'D'开始走,并且'D'只能到'I',然后‘I’只能到'M',然后‘M’只能到‘A’,然后'A'只能到'D',这样走,若走不出DIMA这个单词 输出 poor dima若存在环的话 输出原创 2014-11-27 23:41:43 · 1136 阅读 · 0 评论 -
HDU 4711 Weather 概率DP
题意:有个人,他在某个区域待了n天,这个区域有m个地方,有w种天气情况,先给出这个人行程的每天的天气情况,然后给出 从第i个地方到第j个地方的概率,也可以自身到自身,然后给出 某个地方 是某种天气的概率,问你 这个人最优可能的行程路线也就是每天待在哪个地方,概率DP,求出哪些路线概率最大 再在其中取最小字典序的假设方程 dp[i][j] 代表 第i天待在j城市,状态转移dp[i][j]原创 2014-11-23 19:42:57 · 833 阅读 · 0 评论 -
CodeForces 372B 脑洞大开的DP递推
题目:做了两个多小时,脑洞大开,给了一个01矩阵,求以a,b,为左上角,c,d为右下角的矩阵内有多少包含部分全为0的子矩阵对于这道题目,一开始就想到了DP递推,感觉而已,虽然准,可是做不出啊,想好了递推式子可是细节部分没办法去处理。看了CF上的题解,顿时脑洞大开,这个做法真的是太厉害了,这方法代码简洁明了,同时也提醒到了我,在方程假设出来后,对于转移的细节处理,其实一开始我想到过这个递原创 2014-12-03 23:39:48 · 861 阅读 · 0 评论 -
HDU5115 Dire Wolf 区间DP 记忆化搜索
题意:举个例子,就跟DOTA里的狼BB一样,自身有攻击力,还有光环可以提升同伴的攻击力,狼站成一排,光环只能提供给相邻的狼,打掉一直狼需要打一下,同时它也会打一下,这样你的扣血量其实就等于该狼的攻击力方程很好想,dp[i][j]代表 打掉区间[i,j]内的狼所需最少血量,这里是闭区间,后来看到是200*200 ,那么就懒得去想方程转移了,直接记忆化搜索就可以了,注意点是 一个狼被宰了,原创 2014-12-05 21:47:35 · 808 阅读 · 0 评论 -
ZOJ3305Get Sauce 状压DP,
状压DP的题目留个纪念,首先题意一开始读错了,搞了好久,然后弄好了,觉得DFS可以,最后超时,修改了很久还是超时,没办法看了一下n的范围,然后觉得状压可以,但是没有直接推出来,就记忆化搜索了一下,可是一直错,莫名奇妙,然后没办法看了一下题解,发现了下面这个比较好的方法,然后按照这个方程去推,然后敲,也是WA了好多把,写的太搓了,没人家的清楚明了,唉~也算是给自己留个纪念,状压一直做的都不太好~唉~原创 2015-02-04 22:15:07 · 877 阅读 · 0 评论 -
POJ1717 Dominoes DP,背包的变形
这道题目比较短,而且有图片很容易懂题意,就是每一张牌,分为上下两部分,上面有几个点,代表上部分为几,下面同样,然后n张牌平行竖直放置,这样每一张牌的上面部分组成第一行,下面部分组成第二行,上下两行的和是有差异的值为gap,每一张牌可以上下反一下,这样可以是的差异值gap缩小,问你使得gap值最小 需要翻牌的最少次数首先这道题目跟POJ1837有点类似,但是 边界设置这道题明显会麻烦许多,因为之原创 2015-02-03 22:46:43 · 793 阅读 · 0 评论 -
SGU495 Kids and Prizes 概率DP,期望公式
题目这题目首先进去以后,没地方提交,第一次做SGU的题目,只能在HUSTOJ上提交了有n个盒子,里面有礼物的,m个人,每个人拿,拿过以后 把礼物取出来 把盒子放回去,求选中礼物数的期望其实一开始就假设方程 dp[i]为 第i个人获得礼物的概率,但是状态转移方程不知道该怎么办,想了很久都没有办法,其实首先边界为dp[1] = 1 第一个上来选的人肯定必中接下来一个人的 则由两部分原创 2014-11-17 01:42:23 · 1130 阅读 · 0 评论 -
Codeforces Round #105 (Div. 2) D 概率DP
题目呃 琢磨了半天还是琢磨出来了,题意有些模糊哈,有w个白色物品,b个黑色物品,A,B轮着抽,A先开始,谁先抽到白色谁赢,若最终都没有抽到白色 则算B赢,抽出来的物品不会放回去,B抽完以后 物品还会有一个额外产生丢失,问A赢的概率为多少依旧是以目标状态为边界,当前状态到目标状态所需要的概率为 方程dp[i][j] 代表当前轮到A抽的时候,还有i个白色的j个黑色的A赢的概率为多少则当原创 2014-11-16 21:20:42 · 782 阅读 · 0 评论 -
CodeForces 283C Coin Troubles 分析+背包思想
很灵活的题目,题意简单,看到又是钱币问题,类似于那种给了一定数目T,有n种钱币,每种的价值,让你组合成总价值为T的方案数,但是加了一些限制条件,那就是某些种类钱币数量必须大于另一些种类的,加了个限制条件 我就脑残了,唉智商看来是真不够啊 ,后来看了别人的分析倘若种类a的钱币数量必须要大于种类b的数量,那么如果我要 去 m张b种类的钱币,其实同时也是相当于已经取了m张a种类的,因为a必须大于b的原创 2014-07-28 20:30:39 · 848 阅读 · 0 评论 -
Coder-Strike 2014 - Round2 D 2048 (DP 记忆化搜索)
参考了 http://blog.csdn.net/keshuai19940722/article/details/24723417 他的开头的一点小分析,当然还有题意啦,难得看到CF的题目有点长,看了好久加YY才弄出题意,但是还是没有推出来状态转移方程,因为题目说向开头移动,我倒着推没有推出来,于是 正着尝试了一把 记忆化搜索,一路搜索过来遇到的只有0,2,4而已,扫到当前一格 还得考虑当原创 2014-09-10 18:53:13 · 753 阅读 · 0 评论 -
CodeForces Round#229 DIV2 C 递推DP
对这道题目也只好说呵呵了,没注意k的范围最大才10,所以昨晚纠结了很久,没什么好的方法来处理,后来无奈想去翻翻题解,发现人家开头就来了句,因为k的范围比较小 所以.........我只好暂停马上回头看看题目,是的,k比较小所以完全可以先在询问前预处理DP一遍,DP就比较清晰了,dp[i][j] (i>=0 && i=i && j int n,k,w;char s[100000原创 2014-08-13 15:16:26 · 641 阅读 · 0 评论 -
Codeforces Round #221 (Div. 2) D
有点郁闷的题目,给了2000ms,但是n,m的范围已经是5000了,5000 * 5000一般在别的OJ已经是超了2000ms,一开始不敢敲,看了下别人有n*m的潜逃循环,原来CF的机子如此的强大,一开始题意没看清错了,原来任意行可以交换,列不行那就先dp出 每一行的 每一个位置包括它本身以及前面的连续出现1的长度,然后再对列进行处理,因为列是不能变的,所以对应列是固定的,那么就对列枚举,然后原创 2014-08-15 14:40:33 · 619 阅读 · 0 评论 -
Codeforces Round #245 (Div. 1)B 递推DP
1000 * 1000的图,交点就一个,而且如何相交于一点 画一画就会发现就两种情况,所以首先想到的是可以暴力枚举交点,然后由交点往前推,相交过后两个人继续朝自己目的地前进,所以可以先 暴力枚举 并 递推出每一个点 到这个图的 四个顶点的 最大值,然后根据相交的两种情况取最优的一个即可int mp[1000 + 55][1000 + 55];int dp1[1000 + 55][原创 2014-08-29 18:36:30 · 670 阅读 · 0 评论 -
HDU3076 ssworld VS DDD概率DP
kao,WA了那么多次这题目数据是错的,两个人的血量弄错了,输入的 A的血量其实是B的,输入B的其实是A的,由于有平局现象的干扰,所以一开始先把平局包括进去 的 A赢的概率B赢的概率都算出来,然后减去以后就是平局的概率,再在已经除去平局的情况里 算一下A赢的概率,B赢得概率计算出来,这样就可以计算了,假设方程dp[i][j]代表 A赢了j次B赢了i次的概率,然后状态转移就比较简单了 :dp原创 2014-11-08 22:50:40 · 721 阅读 · 0 评论 -
HDU3853 LOOPS 概率DP
十多分钟做出来了呃,虽然是入门级别的题目,但是还算是比较开心了呵呵题意:从一张r*c的图中 由左上角走向右下角,每一步 有一定概率不动,也有一定概率往下,还有一定概率向由走一步,每一次花费2方程: 是最一般的思路,以目标状态为边界,当前状态到目标状态所需期望 为方程dp[i][j] 代表在(i,j)到目标 需要的期望那么很显然dp[i][j] = dp[i + 1][j原创 2014-11-14 12:58:52 · 897 阅读 · 0 评论 -
HDU2452 Navy maneuvers 记忆化搜索
这题目意思能忍?读了半年,乱七八糟的记忆化搜索 拖拖的,dp[i][0]代表以获得最小值为目标的船以i为起点,dp[i][1]代表以获得最大值为目标的船以i为起点,接下来暴力枚举入度为0的点为起点,开始记忆化搜索,const int N = 100000 + 55;int dp[N][2];int value[N];int degree[N];vector G[N];原创 2014-10-12 22:01:48 · 855 阅读 · 0 评论