像潮落潮涌,送我奔向自由。|

寂静的海底

园龄:3年2个月粉丝:59关注:15

一类神奇的网络流问题

费用流的奇怪用途。

已知(离散)下凸函数 f1(x),f2(x)fk(x)

以及一些限制 [ci,1]xi,1+[ci,2]xi,2+[ci,3]xi,3[ci,k]xi,k=ai

最小化 (fi(xj,i))

做法:使用费用流, 建源点,向所有点 ai 连边 <ai , 0> , 每个 ai 向其对于的函数 fx 连边 <inf , 0> , 每个 fx 向汇点连边 , 具体连边是将 fk(x) 差分 , 连若干条边 <1,fk(x) - fk(x-1)> ,然后跑最小费用最大流,正确性显然。

(若 fk(x) 有定义域上界,仍然可以解决)

例:

P4249 石头剪刀布

题意:给出完全图,其中有些边已经定向,你需要给其它边定向,使得图中三元环的数量最大 。

不好考虑形成的三元环,考虑每个点破坏的三元环 , 若一个点在某个环中入度为0 或 2

那么就破坏了三元环,由于一个被破坏的三元环的度数必然是 {2,1,0} , 对“带有度数为2的环最小化即可” 。

即最小化 (deg(x)i)

每个限制即每条为限制的边(u,v) d(u)+1  or  d(v)+1

f(x)=x×(x1)/2 很明显是凸的,直接用上述做法就可以了。

另一种通过思维理解的网络流的做法实现一样,只是需要理解 “把度数从 xx+1 答案会增加 x ” 。

不如直接求来的无脑

posted @   寂静的海底  阅读(4)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起