算法——0/1分数规划

什么是0/1分数规划?

大概就是这样一类问题:

有一堆物品,选择一个物品都有一个收益ai,有一个代价bi,

选择若干个(也可能有限制)物品,

使得最小(大)

看上去很难的样子?

其实化一下式子就变简单啦!

我们设,显然当满足式子的x最小的时候,就最小了

我们移一下项:

--->$\sum_{i = 1}^{n} a[i] - x * b[i] \le 0$

相当于就只用判断这个式子的真假了~~~

显然这个式子是符合二分条件的,因此我们可以二分x的值

分数规划的题不管是取最大还是最小都是二分+check()

但是每道题对于合法的选择集合有不同的限制,比如必须是环,必须是树,必须……

诸如此类的很多,这个时候就需要根据具体的题目来调整check函数了,

比如如果要求是环,可以将check变成找负环,要是没要求还可以直接贪心,

分数规划只是提供了一个二分的方法,

以下为几道例题(我做过的):

[HNOI2009]最小圈

[APIO2017]商旅

[SDOI2017]新生舞会

 

posted @ 2018-06-06 09:52  ww3113306  阅读(207)  评论(0编辑  收藏  举报
知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。