总结
01分数规划的基本题目套路是这么一个式子
也就是对于每一组问题取或不取,最好希望分数最大/小化
一般采用的都是二分的方法,也就是会套一个 ,然后对于这个值贪心的去判断能否达到要求
有的时候会对分母/分子有一些限制,但是肯定还是要先二分一个值的,那么我们需要对最后得出来的这个式子下手。因为涉及取或者不取,那么考虑背包的思想控制这个分数的上下界。
图上典型的 01 分数规划就是对于边一个价值是边的权值,另一个价值是 1 ,也就是选择或者不选择,求选出的所有边的最小值。这个一般会建立在环上,那么每次判一下负环就可以了。
Luogu P4377 [USACO18OPEN] Talent Show G
这就是一个典型的分母带限制,同上述求解即可
Luogu P3199 [HNOI2009]最小圈
每次二分出一个值,最后的式子应该是 ,那么直接 SPFA 判负环即可
Luogu P3288 [SCOI2014]方伯伯运椰子
最优情况下总流量一定不变(没有人愿意无缘无故增加费用吧,也不让减少),那么这个就有点类似网络流的一个思想,对于一些流量在一段路上减少,在一段路上增加,并且这两段路组成一个环。那么我们对于压缩操作在边上设一个方向,对于扩容操作在边上设一个方向,那么对于一个环,如果我们要操作,原方向的边就代表我们要压缩,非原方向的边就代表我们要扩容。那么对于这个题目就转换成了有一些环的图上的01分数规划。那么剩下的就和上面一样的求法了。
Luogu P3705 [SDOI2017]新生舞会
这个东西像分数规划又不完全是,转换一下就是 ,那么我们仍然二分 C 的值,然后用费用流去判断。建图的话就是源点向左边点连费用为 0 ,容量为 1 的边,左边的边向右边连费用为 ,容量为 1 的边,右边的点向汇点连费用为 0 ,容量为 1 的边。
Luogu P4322 [JSOI2016]最佳团体
这个东西就是一个很明显的 01 分数规划了。转换一下,就是在一个树上选有限数量的点,使得价值总和最大,并且选了一个点就必须选它的祖先节点。这个用树上背包解决即可。(似乎没人说会出现环的情况,我个人认为可能会出现环啊,不过缩个点就可以了,不是此处的重点)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!