DP
文章平均质量分 76
Rivercold
这个作者很懒,什么都没留下…
展开
-
多重背包二进制优化的思考
其实说白了我们最朴素的多重背包做法是将有数量限制的相同物品看成多个不同的0-1背包。这样的时间复杂度为O(V*Σn(i)) V为空间容量,n(i)为每种背包的数量限制。如果这样会超时,我们就得考虑更优的拆分方法,由于拆成1太多了,我们考虑拆成二进制数,对于13的数量,我们拆成1,2,4,6(有个6是为了凑数)。 19 我们拆成1,2,4,8,4(最后的4也是为了凑和为19)。经过这个样的拆分我们可原创 2013-08-19 22:36:36 · 1958 阅读 · 0 评论 -
POJ2342_Anniversary party 树形DP
题意: 给定一个n, 对于每个人有一个权重,然后给定一个上下级关系,上级来了直属下级不能取,最后问最大权重值。 做法: 树形DP,先确定根节点,然后在通过转移方程 dp[root][1]+=dp[son][0]; dp[root][0]+=max(dp[son][0],dp[son][1]); 确定 AC 代码: #include #include #inc原创 2013-08-24 23:18:18 · 473 阅读 · 0 评论 -
POJ1088—滑雪 记忆化搜索
题目大意: 给一个n*m的矩阵,表示高度,然后找条最长路滑雪,要求高度递减。 想法:这道题目很早以前做过,最近又开了一次。开始看成不需要严格递减,平着也行……然后发现好难做啊……搜索的话标记不知道怎么开,然后读了一遍题发现读错了…然后很快就过了…开一个dp数组记录从这个点开始的最长路,开一个visit数组记录是否访问过。然后调用递归函数,如果访问过直接返回dp数组,如果每访问过对于四周进原创 2013-08-14 12:55:32 · 538 阅读 · 0 评论