最小割中的二选一问题
对于处理网络流二选一问题,我们常常采用最小割算法进行求解。
P2057 [SHOI2007] 善意的投票 / [JLOI2010] 冠军调查
幼儿园里有 nn 个小朋友打算通过投票来 决定睡不睡午觉。
对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。
虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。
我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。
我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?
对于这个问题,我们的建图方式是:建立源点S(表示同意睡午觉)和汇点T(表示不同意睡午觉)。然后对于每一对朋友i和j,i向j连一条容量为1的边,j向i连一条容量为1的边。
至于为什么朋友之间应该连双向边,我的解释:
如果只连接从左到右的单向边,会忽略如图的情况:尽管A的入边和A出边对应的出边都被割掉了,但是仍然有A->B->C->A的冲突没有解决,实际上说,这就是A选择了不同意,B选择了同意,C选择了同意,A和C的矛盾就靠双向边来计算。
P1361 小M的作物
小 M 在 MC 里开辟了两块巨大的耕地 AA 和 BB(你可以认为容量是无穷),现在,小 P 有 nn 种作物的种子,每种作物的种子有 11 个(就是可以种一棵作物),编号为 11 到 nn。
现在,第 ii 种作物种植在A中种植可以获得 a_ia**i的收益,在 BB 中种植可以获得 b_ib**i 的收益,而且,现在还有这么一种神奇的现象,就是某些作物共同种在一块耕地中可以获得额外的收益,小 M 找到了规则中共有 mm 种作物组合,第 ii 个组合中的作物共同种在 AA 中可以获得 c_{1,i}c1,i 的额外收益,共同种在 BB 中可以获得 c_{2,i}c2,i的额外收益。
小 M 很快的算出了种植的最大收益,但是他想要考考你,你能回答他这个问题么?
建图方式:
对于二选一问题,我们常用的建图思路:
对于x,y之间若有依赖关系的话,我们可以建立新的虚电来描述额外的需要割掉的边:
然后我们求出的最小割对应的是非最优收益,因此我们用总收益减去非最优收益便可以得到最优收益了。