随笔分类 -  [C++]动态规划-背包DP

摘要:题面 "Bzoj" "洛谷" 题解 这种求比值最大就是$0/1$分数规划的一般模型。 这里用二分法来求解最大比值,接着考虑如何$check$,这里很明显可以想到用树形背包$check$,但是时间复杂度要优化成$O(n^2)$的,可以参考之前写的这篇 "博客" 阅读全文
posted @ 2019-01-11 16:18 water_mi 阅读(240) 评论(0) 推荐(0)
摘要:树形背包的一般形式 给定一棵有$n$个节点的点权树,要求你从中选出$m$个节点,使得这些选出的节点的点权和最大,一个节点能被选当且仅当其父亲节点被选中,根节点可以直接选。 $n^3$解法 原理 考虑设$f[u][i]$表示在$u$的子树中选择$i$个节点(包括它本身)的最大贡献,则可列出以下转移方程 阅读全文
posted @ 2018-10-19 20:31 water_mi 阅读(1980) 评论(2) 推荐(4)
摘要:1.1 前言 ​ 多重背包,想必看到这篇博文的人应该都知道了,这里仅仅列出伪代码($n$为物品个数,$m$为背包容积) ​ 显然,这种算法的复杂度是很不可取的,于是我们来考虑优化 1.2 优化方式 ​ 设$c,v,w$分别为当前物品的个数,体积,价值,根据原始转移方程可知,$f_i$一定是由$f_{ 阅读全文
posted @ 2018-10-15 20:55 water_mi 阅读(391) 评论(0) 推荐(0)