![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
我的DP之旅!
文章平均质量分 74
LuckyqXd
这个作者很懒,什么都没留下…
展开
-
uva 1220 - Party at Hali-Bula
//uva 1220 - Party at Hali-Bula/* 赤裸裸的树的最大独立集 对于以i为根的子树,其最大独立集为 d[i]. 则有 d[i] = max(sum(d[j]),sum(d[k]) +1 ) . 其中d[j]表示 d[i]的儿子节点最大独立集.d[k]表示d[i]的孙子节点的最大独立集。 在这里我们可以使用递归的方法来求得这个d数组。使用flag标记当取得最原创 2015-10-03 23:52:05 · 393 阅读 · 0 评论 -
uva 12186 - Another Crisis-树上动态规划
// uva 12186 - Another Crisis-树上动态规划/* 典型的树形动态规划问题: 此题题目意思很简单,也很好想到解法,但是就是写程序需要注意。 设d[i]表示以节点i为向上级提交申请需要工人签字的人数。 那么对于节点i,d[i] 是节点i子节点 d[j]集合的最小的前c个值,c为满足直属下属签字率至少为T时签字的人数。 在计算时我们采用了递归的方式。还有就是这原创 2015-10-03 16:08:15 · 382 阅读 · 0 评论 -
uva 10118 - Free Candies-动态规划
//// main.cpp// uva 10118 - Free Candies-动态规划/* 这一题是多阶段决策问题.另外注意的就是状态压缩。即使用二进制表示当前的pocket具有的糖果的颜色。 在每一步选择哪一个管道决定了下一步。 我们设d[i][j][k][l] 表示依次从第一,第二个管道,第三个管道,第四个管道,当前已经到达的位置,剩下可以获得的candies对数。 这里原创 2015-10-07 23:22:54 · 388 阅读 · 0 评论 -
hdu 2577 How to Type--记忆化搜索
题目意思不难理解。注意点就是 caslock开启后 安shift+字母键可写出小写。这里主要就是 在何时开启caslock键和关闭caslock键。所以我们设 d[i][caslock]表示 caslock键在第i个字符时的状态是caslock(未开启为0,开启为1)时,打完后序字符所需要的按键次数。则根据当前是否是 小写字母 和打完之后是否关闭caslock键来决定状态的转移。转原创 2015-10-22 20:57:23 · 372 阅读 · 0 评论 -
uva 1336 - Fixing the Great Wall
//// main.cpp// uva 1336 - Fixing the Great Wall/* 我们先按位置大小排序。 首先我们注意到: 对于 i ....x.....j,x表示现在的机器人的位置。 如果x现在在修复了i,那么位于x和i之间的所有位置都是已经修复好的了,因为我们当前已经到了i,那么我们就可以顺便修复了x和i之间的位置,这绝对不会增加最终的总费用。所以得出了原创 2015-10-10 17:57:48 · 1032 阅读 · 0 评论 -
uva 10599 - Robots(II) -动态规划
//// main.cpp// uva 10599 - Robots(II) --动态规划/*此题的状态转移方程好想,很简单。 d[i][j] = max(d[i+1][j] ,d[i][j+1]) + g[i][j] ; 另外 求其中的一条路径也好写。 对于方案数,这是难点啊。MD,原来 即使行代码就解决的,价格方案数。。。。。 这里方案数,要注意的是注意重复,不能根据上原创 2015-10-25 21:58:13 · 453 阅读 · 1 评论