会员
周边
新闻
博问
闪存
赞助商
YouClaw
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
叫我露儿大人
我不会放弃治疗的!【握拳
博客园
首页
新随笔
联系
管理
订阅
随笔分类 -
动态规划
1
2
下一页
leetcode 152 Maximum Product Subarray
摘要:题意:最大子段乘积。 解法:一开始按最大子段和写了一个……果断挂了……因为负数乘以负数会变正不像加法会越加越少,所以我就把dp变成二维数组,第一维表示以第i个数结尾的子段积中为正数的最大的值,第二维表示以第i个数结尾的子段积中为负数的绝对值最大的值,dp方程就是按正负相乘的规则讨论一下就可以了……具
阅读全文
posted @
2016-02-19 16:18
露儿大人
阅读(318)
评论(0)
推荐(0)
POJ 1426 Find The Multiple
摘要:题意:给一个整数n,求一个不超过100个数字的,只由01组成的,是n的倍数的,非0十进制整数。 解法:dp。考虑dp[i][j]表示i个数组成的数modn为j的可能性,则有状态转移方程:foreach dp[i][j]:dp[i + 1][j × 10 % n] = 1, dp[i + 1][(j
阅读全文
posted @
2015-11-05 20:43
露儿大人
阅读(133)
评论(0)
推荐(0)
POJ 1185 炮兵阵地
摘要:题意:中文题……解法:状压dp。用二进制数表示一行的状态,1表示放人,0表示不放人,考虑dp[i][j][k]表示第i行状态为j,第i-1行状态为k时的人数,则有状态转移方程当状态枚举状态jkl分别表示第i行、第i-1行、第i-2行状态,当jkl互相兼容时,dp[i][j][k] = max(dp[...
阅读全文
posted @
2015-11-03 10:06
露儿大人
阅读(161)
评论(0)
推荐(0)
POJ 2241 Mondriaan's Dream
摘要:题意:给一块n×m的空地,用1×2的砖铺,有多少种方案。解法:状压dp。考虑dp[i][j]表示前i - 1行都铺满时第i行的状态为j时的方案数。对于第i行,每个格子上是否有砖用0和1表示,0表示不铺砖,1表示铺砖,二进制压缩状态,枚举第i - 1行的状态j和第i行的状态k,看这两种状态是否符合实际...
阅读全文
posted @
2015-10-26 20:09
露儿大人
阅读(201)
评论(0)
推荐(0)
POJ 1141 Brackets Sequence
摘要:题意:给出一个括号序列,问最短的补全成合法括号序列是什么。解法:区间dp。考虑dp[i][j]表示i到j区间补全需要的多余字符个数,则有状态转移方程:dp[i][j] = min{dp[i][k], dp[k + 1][j]},0 #include#include#include#include#i...
阅读全文
posted @
2015-10-12 13:47
露儿大人
阅读(186)
评论(0)
推荐(0)
POJ 1157 LITTLE SHOP OF FLOWERS
摘要:题意:有n束花m个花瓶,m >= n,现在要把这n束花放花瓶里,可以有空花瓶,但是花的相对顺序必须按序号,告诉每束花放在不同花瓶里的价值,求能获得的最大价值。 解法:dp。考虑dp[i][j]为前i束花放前j个花瓶的最高价值,则有状态转移方程:dp[i][j] = max(dp[i][j - 1],
阅读全文
posted @
2015-10-07 19:42
露儿大人
阅读(127)
评论(0)
推荐(0)
POJ 1160 Post Office
摘要:题意:有n个村庄,要在其中m个村庄里建邮局,每个村庄去邮局的代价为当前村庄到最近的一个有邮局村庄的路程,问总最小代价是多少。解法:dp。dp[i][j]表示在前j个村庄建立i个邮局后的代价,则状态转移方程:dp[i][j] = min{dp[i - 1][k] + f(k + 1, j)},k = ...
阅读全文
posted @
2015-10-06 15:09
露儿大人
阅读(183)
评论(0)
推荐(0)
POJ 1080 Human Gene Functions
摘要:题意:给两个DNA序列,在这两个DNA序列中插入若干个'-',使两段序列长度相等,对应位置的两个符号的得分规则给出,求最高得分。解法:dp。dp[i][j]表示第一个字符串s1的前i个字符和第二个字符串s2的前j个字符对齐时的最高得分,转移方程:dp[i][j] = max{dp[i - 1][j ...
阅读全文
posted @
2015-09-29 14:54
露儿大人
阅读(135)
评论(0)
推荐(0)
HDU 5489 Removed Interval
摘要:题意:求一段序列中删掉L个连续元素后的LIS。解法:我的想法很复杂= =怎么说呢……首先用nlogn的方法求LIS得到的序列dp的第i项的意义为上升子序列所有长度为i的序列结尾元素的最小值,那么先倒着用nlogn的方法求一遍最长下降子序列记为dp1,记录每一步怎么更新的dp1,再正着求一遍最长上升子...
阅读全文
posted @
2015-09-27 18:51
露儿大人
阅读(592)
评论(0)
推荐(0)
POJ 1276 Cash Machine
摘要:题意:给你n种面值的钱,告诉你每种面值钱的面值和个数,问能凑出最大的不大于m的钱数是多少。解法:多重背包。我觉得直接多重背包转01应该会T……又懒得二进制搞……用了POJ1472的思路搞了一下……代码:#include#include#include#include#include#include#...
阅读全文
posted @
2015-09-19 22:26
露儿大人
阅读(117)
评论(0)
推荐(0)
POJ 1742 Coins
摘要:题意:给n种硬币,每种硬币的面额为Ai,个数为Ci,问用这些硬币最多能凑出多少种不大于m的面额。解法:男人八题之一……虽然我是个妹子但还是要做啊……_(:з」∠)_看起来是个多重背包……然而算了复杂度之后……呵呵……百度一下……被机智了一脸……n层循环,dp[i][j]表示用前i个硬币是否能表示面额...
阅读全文
posted @
2015-09-14 18:34
露儿大人
阅读(183)
评论(0)
推荐(0)
CF 577B Modulo Sum
摘要:题意:给一个长度为n的正整数序列,问能不能找到一个不连续的子序列的和可以被m整除。解法:抽屉原理+dp。首先当m#include#include#include#include#include#include#include#include#include#include#include#inclu...
阅读全文
posted @
2015-09-11 21:19
露儿大人
阅读(1397)
评论(0)
推荐(0)
HDU 5389 Zero Escape
摘要:题意:有一些人,每人拿一个号码,有两个门,门的值分别为A和B,要求把人分成两堆(可以为空)一堆人手持号码之和的数字根若等于A或者B就可以进入A门或者B门,要求两堆人分别进入不同的门,求有几种分配方式,如果A和B的值相等则算两种。解法:dp。比赛的时候并不知道一个数%9+1就是数字根……煞费苦心的算了...
阅读全文
posted @
2015-08-14 10:26
露儿大人
阅读(172)
评论(0)
推荐(0)
CF GYM 100703F Game of words
摘要:题意:两个人玩n个游戏,给出每人玩每个游戏的时间,两个人需要在n个游戏中挑m个轮流玩,求最短时间。解法:dp。(这场dp真多啊……话说也可以用最小费用最大流做……然而并不会XD)dp[i][j][k]表示玩前i个游戏时第一个人玩了j个游戏,第二个人玩了k个游戏,所以状态转移方程为dp[i][j][k...
阅读全文
posted @
2015-07-29 14:15
露儿大人
阅读(257)
评论(0)
推荐(0)
CF GYM 100703G Game of numbers
摘要:题意:给n个数,一开始基数为0,用这n个数依次对基数做加法或减法,使基数不超过k且不小于0,输出最远能运算到的数字个数,输出策略。解法:dp。dp[i][j]表示做完第i个数字的运算后结果为j的可能性,可能为1,不可能为0,于是得到状态转移方程dp[i][j] = dp[i - 1][j - a[i...
阅读全文
posted @
2015-07-29 11:22
露儿大人
阅读(175)
评论(0)
推荐(0)
HDU 5313 Bipartite Graph
摘要:题意:给一个二分图,问想让二分图变成完全二分图最多能加多少条边。解法:图染色+dp+bitset优化。设最终的完全二分图两部分点集为A和B,A中点个数为x,B中点个数为y,边数则为x × y,答案即为x × y - m,那么用dp计算集合A中点个数的可能性。先用图染色计算每个连通分量里两种颜色点的个...
阅读全文
posted @
2015-07-27 09:38
露儿大人
阅读(249)
评论(0)
推荐(0)
CF 560e Gerald and Giant Chess
摘要:题意:在h×w的棋盘中从左上角走到右下角,只能向右或向下走,有n个点不可以经过,一共有多少种方案。解法:dp。先对点按横坐标排序(横坐标相等按纵坐标,也可以反过来)dp[i]表示不经过其他非法点走到第i个非法点的路径数,则有dp方程:dp[i] =c(point[i].x + point[i].y ...
阅读全文
posted @
2015-07-24 15:44
露儿大人
阅读(362)
评论(0)
推荐(0)
POJ 2479 Maximum sum
摘要:题意:求一段序列的最大两段子段和。解法:dp。用pre数组记录以i结尾的上一次求的最大x段子段和,那么对于最大x+1段子段和,dp[i] = max(dp[i - 1], pre[i - 1]) + a[i],由dp[i - 1]转移来的表示在第x+1个子段的末尾再加一个数,由pre[i - 1]转...
阅读全文
posted @
2015-07-22 15:38
露儿大人
阅读(135)
评论(0)
推荐(0)
POJ 1664 放苹果
摘要:题意:中文题就不说了…… 解法:dp。想了半天也想不出来……果然智商被碾压……一定是装×的报应(wwww 考虑为dp[i][j]表示i个苹果放在j个盘子中的情况数。 当苹果数小于盘子数的时候,dp[i][j] = dp[i][i] 当苹果数大于盘子数的时候,dp[i][j] = dp[i][j -
阅读全文
posted @
2015-05-06 17:41
露儿大人
阅读(124)
评论(0)
推荐(0)
POJ 1458 Common Subsequence
摘要:题意:LCS……最长公共子序列……不想解释了解法:这题只需要求长度,所以显而易见(对没错我就是来装×的),方程为dp[i][j] = {dp[i - 1][j - 1] + 1(s1[i] == s2[i]), max(dp[i - 1][j], dp[i][j - 1])}。好吧还是解释一下……d...
阅读全文
posted @
2015-05-06 11:22
露儿大人
阅读(106)
评论(0)
推荐(0)
1
2
下一页
公告