码迷,mamicode.com
首页 >  
搜索关键字:动态规划    ( 6061个结果
例题9-14 完美的服务 UVa1218
1.题目描述:点击打开链接 2.解题思路:本题的分析思路类似于上一道例题。还是利用树状dp解决。根据题意,可以定义如下的三种状态值: (1)d(u,0)表示u不是服务器,但u的父亲是服务器(暗含u的所有子结点都不是服务器);(2)d(u,1)表示u是服务器,子结点可以是也可以不是;(3)d(u,2)表示u,u的父亲都不是服务器(暗含u的其中一个子结点是服务器); 定义了这样的三个状态之后,状...
分类:其他好文   时间:2015-02-15 21:58:12    阅读次数:169
uva 12563(动态规划起步第三天 01背包变形)
谈到背包,大家肯定都熟悉,我就不多讲,而这题挺有意思。DP[i][j] 表示前 i 首歌在j时间内唱的最多曲目;状态有了,那么怎么转移呢? DP[i][j] = max{DP[i - 1][j],DP[i - 1][j - t[i]] + 1};但是此题还有时间。所以如果初始化为0的话,按照平常背包...
分类:其他好文   时间:2015-02-15 21:46:19    阅读次数:170
poj 3267 The Cow Lexicon 动态规划
字符串动态规划 匹配时两指针的重要思想 针对原串从后往前 不需要string类
分类:其他好文   时间:2015-02-15 19:23:05    阅读次数:154
poj 1837 Balance 动态规划
动态规划 小暴力 类01背包 还有stl的错误使用 使用迭代器对STL容器进行遍历
分类:其他好文   时间:2015-02-15 19:18:48    阅读次数:119
树形动态规划
?给定一个中序遍历为1,2,3,…,n的二叉树 ?每个结点有一个权值 ?定义二叉树的加分规则为: –左子树的加分×右子树的加分+根的分数 –若某个树缺少左子树或右子树,规定缺少的子树加分为1。 ?构造符合条件的二叉树 –该树加分最大 –输出其前序遍历序列 定义dp[i][j] 为中序遍历为i-->j...
分类:其他好文   时间:2015-02-15 18:01:31    阅读次数:158
uva 116(动态规划起步第三天 DAG)
一道比较简单的动态规划的题,求从第一列的任何位置 到达最后一列 和的最小值。所以这个状态可以是 列,在每一列有三种决策,直行,右上,右下。DP[i][j] 表示在第i行,j列到达最后一列的最小支出。那么有了状态,我们可以进行转移,DP[i][j] = min{DP[i + 1][j + 1],DP[...
分类:其他好文   时间:2015-02-15 17:53:36    阅读次数:137
例题9-13 Hali-Bula的晚会 UVa1220
1.题目描述:点击打开链接 2.解题思路:本题几乎就是树的最大独立集问题,只不过多了一个判断解的唯一性的要求。针对这种情况,可以做如下定义: (1)d(u,0),f(u,0)分别表示以u为根的子树中,不选u点的最大人数和方案的唯一性(f=1表示唯一,f=0表示不唯一); (2)d(u,1),f(u,1)分别表示以u为根的子树中,选u点的最大人数和方案的唯一性(f=1表示唯一,f=0表示不唯一...
分类:其他好文   时间:2015-02-15 13:34:59    阅读次数:173
例题9-12 工人的请愿书 UVa12186
1.题目描述:点击打开链接 2.解题思路:本题利用树状dp解决,不过其实也可以理解为用贪心法解决的。设d(u)表示u给上级发信最少需要的工人个数,假设u有k个子结点,那么根据题意,至少需要c=(k*T-1)/100+1个直属下属发信才行。而每个直属下属的工人数是di,那么这时只需要把di由小到大排序,然后把前c个相加就是d(u)了。最终的答案是d(0)。由于需要排序,因此总的时间复杂度是O(N*...
分类:其他好文   时间:2015-02-15 09:31:13    阅读次数:245
例题9-9 切木棍 UVa10003
1.题目描述:点击打开链接 2.解题思路:本题类似于动态规划中的“最优矩阵链相乘”问题——具有最优子结构。定义d(i,j)表示切割序号为i,j的切点处的小木棒的最优费用。用数组a存储切点的位置,则状态转移方程如下: d(i,j)=min{d(i,k)+d(k,j)|i 其中,a[j]-a[i]表示切割序号为i到j的小木棒的第一刀的费用。切完后,小木棒变为i~k,k~j两部分。如果设所有切点是...
分类:其他好文   时间:2015-02-14 17:37:17    阅读次数:176
例题9-10 括号序列 UVa1626
1.题目描述:点击打开链接 2.解题思路:本题要求添加尽量少的括号,使得括号序列是一个正规序列。定义d(i,j)表示子串S[i...j]至少需要添加几个括号。根据题意,可知有两种转移方式: (1)如果S形如(S‘)或[S'],则转移到d(S'); (2)如果S至少有两个字符,则可以分成AB,转移到d(A)+d(B); 边界是:S为空时,d(S)=0,S为单字符时,d(S)=1,。注意不...
分类:其他好文   时间:2015-02-14 17:33:09    阅读次数:160
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!