dp
文章平均质量分 53
AndyTeen
别在黎明前被冻死了
展开
-
poj 1887解题报告
题目要求的是最长下降子序列的长度。长度为n的串的最长子序列长度必定存在最优子结构。证明:若序列{x1,x2x3...xn}的最长下降子序列为{y1,y2,y3,y4...yk},不妨假设yk=xm。则{y1,y2,y3...yk}也一定是序列{x1,x2,x3...xm}的最长子序列。否则,一定存在p>k,使得序列{x1,x,x3...xn}的最优解为p>k。与假设矛盾。因此,可以原创 2014-12-23 20:16:21 · 554 阅读 · 0 评论 -
Codeforces Round #323 (Div. 2) D.Once Again...(582B)
1题意2思路3个人注意4代码1题意 给出一个长度为n(1<= n <= 100)的序列,使其重复t(1<= t <= 1e7)次后,求最长不减子序列的长度。2思路 序列重复t次后总长度高达1e9,如果暴力dp,即使是O(n)的算法也不可取。因此需要另辟蹊径。长度为n的最长上升子序列可以容易由dp求得。重复t次可以分解为:一次的增加长度为n的序列,共增加t次。如果我们能够由两个长度为n原创 2015-10-10 20:19:03 · 707 阅读 · 0 评论 -
一道树形dp的题目:个人赛第二场G题
description 有N个房间,依次标号为1~N号,每个房间中都有一定的金币,现在你需要做的就是到房间里去抢金币。 有些房间是被依次嵌套或包含的,每个房间u都有一个父亲房间f,意思是u直接被f嵌套,而f成为u的父房间,u成为f的子房间,若f为0,表示当前的u为最外层的房间,1号房间一定是最外层的房间。 你具有超能力,能够在任意时刻进入任何一个房间,然后把这个房间的金币一次性拿光(你不拿光的原创 2015-07-17 21:45:37 · 657 阅读 · 0 评论 -
hdu2196 树形dp
题意: 给出一颗带权树,求以树上每个点为起点可以到达的最大边权和。 思路: 树形dp的思想,将无根树转化为有根树,对于每个点来说,最长的一条路可能有两种情况,一是向下走,经过其某个子树。另一种情况是向上走,由其父亲延伸而来。 以dp[i][0]表示由i节点向下可以得到的最长边权和,dp[i][0] = max(dp[k][0] + value[k]),k为i的子节点。 一次dfs可以得到原创 2015-07-17 11:00:35 · 502 阅读 · 0 评论 -
Hdu 5119 HappyMatt Friends (2014年北京现场赛H题)
题意: 给定n个数(1<= n<= 40),选择其中的一些(选择的数量可以为0)作异或运算,求运算后的值大于给定的m的方法数。 思路: 对于每种方法,每个数只有选择或者不选择两种状态。因此方法总数为2 ^40。暴力肯定不行。采用类似背包的思想,设计状态dp[i][j] ,含义为在前i个数中选择任意个数后的异或和为j的方法总数。由于异或运算的性质。可知dp[i][j] = dp[i - 1][j原创 2015-07-12 19:34:23 · 591 阅读 · 0 评论 -
Hdu 5115 ---区间dp(2014北京现场赛D题)
题意: 现在有n(2 <= n <=200)个狼排成一排,每个狼有其初始的攻击力。此外,每只狼还对其相邻的两只狼产生攻击力加成的效果。每只狼的当前攻击力等于自己的初始攻击力加上其相邻的狼的加成。 现在要杀狼,但每杀一头狼,都会承受该狼当前的伤害,问杀完这n只狼最少承受的伤害总值是多少? 思路: 由于每个阶段的决策不同,对于杀某一头狼所承受的伤害也可能不同。伤害加成方式类似于炉石传说的火舌图腾。原创 2015-07-12 19:02:08 · 523 阅读 · 0 评论 -
hdu2457
hdu 2457 题意: 依旧是DNA序列的问题。给出一些致病的基因片段(仅由’A’,’G’,’C’,’T’组成),和一个DNA序列T,可以在序列T上做修改操作,修改某一个碱基为另一个碱基记作一次修改操作。问你最少修改多少次使得序列T不包含任何已给出的致病基因片段。 思路: 多串匹配,依旧是AC自动机。关于trie图与DNA序列的关系可以参考poj 1625原创 2015-05-18 23:22:02 · 1025 阅读 · 0 评论 -
poj 1625
poj 1625 题意: 现有一个奇葩的国家。总统不允许任何含有非法单词的句子出现。假定这个国家的句子长度固定为m。现给定大小为n 的字符集,和p个长度为min(m,10)的非法单词。任何包含非法单词的句子都是非法的。求所有合法句子的数目。 为了解决这个问题 我们先假定字符集{‘A’,’G’,’C’,’T’} 非法单词有2个原创 2015-05-12 13:06:57 · 1589 阅读 · 0 评论 -
poj 1160
题意为给出n个村庄的坐标,问如何设立m个邮局,使得每个村庄离其最近邮局的总路程即总花费最小。思路:若只设立一个邮局,可知邮局设在村庄坐标中位数的位置是最优解。这个问题属于在n个东西中选出m个,求全局最优解的问题。自然想到dp。设立二维数组dp[i][j-1]表示i个邮局放入前j个村庄所需的最小费用。可得dp方程:dp[i][j]=min(dp[i-1][k]+cost[k+1][j]) (原创 2015-01-04 21:01:20 · 544 阅读 · 0 评论 -
HDU 5691 --tsp变型
题意: 有n(n<=16)个数字需要排列,其中一些的数字位置是给定的,问最后排列的ans值最大是多少。ans的定义是所有连续两个数字的乘积的和。思路: 完全排列复杂度n!,不可取。ans乘积的和具有最优子结构。按照tsp类似的方法设定状态dp[i][j]表示状态为i的情况下,最后选择第j个数可以得到的最优解。i状态的二进制位中为1的对应的数字排列在序列最前面。 其实这个状态信息量不小原创 2016-06-12 15:38:13 · 353 阅读 · 0 评论