
动态规划
文章平均质量分 54
小猫dd
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
nyoj737 石子合并 详细
好吧, 也别着急,动态规划本来就是很难理解的, 你们也做了一些动态规划的提了。 也了解DP本来就很难想, 我开始做的时候也很慢, 也是自己理解了好久, 开始都这样。 我讲的也有点快, 那块没理解, 欢迎随时来问。 我那讲的不好理解, 就指出来, 我改进。大家相互学习。 DP一般最难想的就是状态转移方程。 区间型DP一般(也有例外)都是从小的区间开始求最优解,然后不断扩大所求的区间,而求大区原创 2015-04-13 21:36:18 · 1130 阅读 · 0 评论 -
hdoj1584 蜘蛛牌 区间型DP
题目链接分析: f[i][j] 表示 把牌 i 到 j 摞为一串时花费最少的步数。 d[i][j] 表示把牌 i 挪到牌 j 上时需要走的步数(最初给的状态)。 以一串牌 3~8 为例, 我们需要把牌 3 放到牌 4 上 , 而在最优的移动方案下, 牌 4 的位置不确定, 所以我们枚举牌 4 所在的位置(因为一共10张牌, 枚举是可以的) , 这样得出状态转移方程: f[3][8] = mi原创 2015-06-09 21:47:37 · 528 阅读 · 0 评论 -
zoj2432 hdoj1423 最长公共上升子序列(LCIS)
zoj2432题目链接 hdoj题目链接题意: 一看题目题意就很明显了, 两个数组a,b,求出两个数组公共的最长的上升子序列(可以不是连续的子序列)。 分析: 如果做过最长公共子序列应该更容易明白点。 定义状态d[i][j]表示以a数组的前i个元素,b数组的前j个元素并且以b[j]为结尾的LCIS的长度。 首先:a[i] != b[j]时, d[i][j] = d[i-1][j]; 因原创 2015-05-01 11:37:18 · 573 阅读 · 0 评论 -
nyoj832 合并游戏(状态压缩DP)
合并游戏 题目链接 题意 : n个石子, 给你一个n*n矩阵, A[i][j]表示第i个和第j个合并蹦出的金币值, 合并完石子j消失。求合并所有石子后,所得的最大金币数。 分析 : 1、 题中给的数据范围 n(1<=n<=10) 也就是说最多10个石子, 那么我们不妨用一个二进制串来表示合并的状态,1表示没被合并,0表示合并后消失了,例如(1001)四个石子第2、3个被合并了。 2、原创 2015-05-04 22:45:24 · 572 阅读 · 0 评论 -
状态压缩DP (poj 3254, poj 1185, nyoj 81)
poj1185 poj3254 nyoj81 状态压缩DP原创 2014-11-30 16:19:19 · 554 阅读 · 0 评论 -
2015编程之美资格赛 回文子序列个数
描述: 给定一个字符串, 求它回文子序列的个数。回文子序列字符反转顺序后与原序列相同。 如字符串”aba“(长度<100), 它的回文子序列包括”a”, “a”, “aa”, “b”, “aba”,共5个(不要求连续)。内容相同位置不同的子序列算不同的子序列。 输入 第一行一个整数T(1 ≤ T ≤ 30),表示数据组数。之后是T组数据,每组数据为一行字符串。 输出 对于每组数据输出一行,原创 2015-04-18 22:49:42 · 1633 阅读 · 0 评论 -
nyoj 37 nyoj15区间型动态规划
最近几天在做区间型动态规划,刚开始原创 2014-11-22 21:48:51 · 784 阅读 · 0 评论 -
最长公共子序列(动态规划) nyoj36
最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。 做了一些动态规划的题的同学应该知道 做这类题大多是通过自底向上(或自顶向下)的方式求出每一状态的最优 解,最后得出问题的最优解。(一般用数组(或别的)存它的当前状态下的最优解,求当前状态如果需要由之前的状态求得时,直接用就可以了) 现在我们就以串原创 2014-11-20 21:35:15 · 1348 阅读 · 0 评论 -
poj1417 true liars(并查集 + DP)详解
这个题做了两天了。首先用并查集分类是明白的, 不过判断是否情况唯一刚开始用的是搜索。总是超时。 后来看别人的结题报告, 才恍然大悟判断唯一得用DP.题目分析:题中会给我们一些信息, 告诉我们那些是同一类, 哪些是不同类。 当然刚开始的时候我们无法判断那一类是好人、坏人。 那么我们不妨把有关系的点(yes, no)全归为一类, 他们有一个相同的父节点。然后用一个数组(relation[]原创 2015-04-13 11:45:18 · 985 阅读 · 0 评论 -
nyoj712 双程动态规划
探寻宝藏这里写链接内容 题意很清晰啦,一个机器人从(1,1)点出发到(m,n)点,再从(m,n)点回到最初点。我们可以把它看成在(1,1)点同时有两个机器人出发到(m,n)点。我开始做的是四维的。f[i][j][x][y]表示 : 机器人一在(i,j),机器人2在(x,y)时所收集的宝藏最多是多少。机器人1从上面(i-1 , j)或者左面(i , j-1)走到(i, j),机器人2从上面(x-1原创 2015-04-02 20:12:33 · 649 阅读 · 0 评论 -
背包问题——nyoj860 又见01背包
好吧, 如果想得到了用d[i]来存储价值一定时,物品所占重量最小状态。那么应该没什么难的啦!原创 2015-04-14 22:14:20 · 477 阅读 · 0 评论 -
双程动态规划 nyoj61
题目大意: 在矩阵m*n中,从(1,1)点到(m,n)点,再从(m,n)点到(1,1)点,所走路线经过的同学最大好心值, 要求每个点只能走一遍。 分析: ①我们可以把它只看成两个人同时从(1,1)点, 走到(m,n)点。 ②因为只可以往两个方向走所以无论什么了路线,从(1,1)到(m,n)所走的步数一定相同。开四维数组存状态的话f[x1][y1][x2][y2]](表示当前一个人走在(x1,原创 2015-04-14 22:53:40 · 585 阅读 · 0 评论 -
nyoj304 节能 动态规划
这个题自己琢磨了好久,也没想出状态转移方程,一经提醒才大悟啊! 这是个区间型DP,先开门见山看一下怎样存状态的吧:d[i][j][0] 所存的状态是在i到j这个区间所有灯关闭,并且机器人位于i点时所消耗的最小功率。 d[i][j][1]所代表就是 i到j区间所有灯关闭,位于j点时 所消耗的最小功率。 d[i][j][0] 区间(i, j)的灯都关闭了,机器人正位于i点 , 上一步可能是从j点原创 2015-04-04 23:00:06 · 793 阅读 · 0 评论 -
hdoj1423 最长上升公共子序列
hdoj1423这里写链接内容题目分析: 两个数组a[n1] , b[n2], 求最长上升公共子序列。 我们可用一维存储 f[i] 表示 b 数组以 j 结尾, 与 a[] 数组构成的最长公共上升子序列。 对数组 d 的任意 j 位, 都枚举 a[1 ~n1]。 当a[i] == b[j] 时 , 在1 ~ j - 1中 找出 b[k] 小于 a[ i ] 并且 d[k] 的值最大。 当原创 2015-06-15 22:29:31 · 537 阅读 · 0 评论