01 分数规划
总结
$\quad$01分数规划的基本题目套路是这么一个式子
\(\quad\)也就是对于每一组问题取或不取,最好希望分数最大/小化
\(\quad\)一般采用的都是二分的方法,也就是会套一个 \(log\) ,然后对于这个值贪心的去判断能否达到要求
\(\quad\)有的时候会对分母/分子有一些限制,但是肯定还是要先二分一个值的,那么我们需要对最后得出来的这个式子下手。因为涉及取或者不取,那么考虑背包的思想控制这个分数的上下界。
\(\quad\)图上典型的 01 分数规划就是对于边一个价值是边的权值,另一个价值是 1 ,也就是选择或者不选择,求选出的所有边的最小值。这个一般会建立在环上,那么每次判一下负环就可以了。
Luogu P4377 [USACO18OPEN] Talent Show G
\(\quad\)这就是一个典型的分母带限制,同上述求解即可
\(\quad\)每次二分出一个值,最后的式子应该是 \(<0\) ,那么直接 SPFA 判负环即可
\(\quad\)最优情况下总流量一定不变(没有人愿意无缘无故增加费用吧,也不让减少),那么这个就有点类似网络流的一个思想,对于一些流量在一段路上减少,在一段路上增加,并且这两段路组成一个环。那么我们对于压缩操作在边上设一个方向,对于扩容操作在边上设一个方向,那么对于一个环,如果我们要操作,原方向的边就代表我们要压缩,非原方向的边就代表我们要扩容。那么对于这个题目就转换成了有一些环的图上的01分数规划。那么剩下的就和上面一样的求法了。
\(\quad\)这个东西像分数规划又不完全是,转换一下就是 \(\sum a_i-C\times b_i=0\) ,那么我们仍然二分 C 的值,然后用费用流去判断。建图的话就是源点向左边点连费用为 0 ,容量为 1 的边,左边的边向右边连费用为 \(a_i-C\times b_i\) ,容量为 1 的边,右边的点向汇点连费用为 0 ,容量为 1 的边。
\(\quad\)这个东西就是一个很明显的 01 分数规划了。转换一下,就是在一个树上选有限数量的点,使得价值总和最大,并且选了一个点就必须选它的祖先节点。这个用树上背包解决即可。(似乎没人说会出现环的情况,我个人认为可能会出现环啊,不过缩个点就可以了,不是此处的重点)