一类神奇的网络流问题
费用流的奇怪用途。
已知(离散)下凸函数 $f_1(x),f_2(x)\dots f_k(x) $
以及一些限制 $ [c_{i,1}] x_{i,1} + [c_{i,2}] x_{i,2} + [c_{i,3}] x_{i,3} \dots [c_{i,k}] x_{i,k} = a_i$
最小化 $\sum \left( f_i(\sum x_{j,i}) \right)$
做法:使用费用流, 建源点,向所有点 $a_i$ 连边 $\text{<ai , 0>}$ , 每个 $a_i$ 向其对于的函数 $f_x$ 连边 $\text{<inf , 0>}$ , 每个 $f_x $ 向汇点连边 , 具体连边是将 $f_k(x)$ 差分 , 连若干条边 $ \text{<1,fk(x) - fk(x-1)>}$ ,然后跑最小费用最大流,正确性显然。
(若 $f_k(x)$ 有定义域上界,仍然可以解决)
例:
题意:给出完全图,其中有些边已经定向,你需要给其它边定向,使得图中三元环的数量最大 。
不好考虑形成的三元环,考虑每个点破坏的三元环 , 若一个点在某个环中入度为0 或 2
那么就破坏了三元环,由于一个被破坏的三元环的度数必然是 $\{2,1,0\}$ , 对“带有度数为2的环最小化即可” 。
即最小化 $\sum \binom {deg(x)}{i}$
每个限制即每条为限制的边$(u,v)$ $d(u)+1 \ \ or \ \ d(v) +1$
$f(x) = x \times (x-1) / 2$ 很明显是凸的,直接用上述做法就可以了。
另一种通过思维理解的网络流的做法实现一样,只是需要理解 “把度数从 $x$ 成 $x+1$ 答案会增加 $x$ ” 。
不如直接求来的无脑
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970979,谢谢你的阅读或转载!

浙公网安备 33010602011771号