CF708D Incorrect Flow

传送门

巧妙建模题。

题意:给定一张网络和一个流,但流不一定正确。可以花费 1 的代价,使某条边容量 ±1,或者使某条边流量 ±1。问最小代价使流正确。

题面非常漂亮。而且网络流的问题也是用网络流解。

考虑一条边,初始容量 c,初始流量 f。设它最终流量 f

注意到如果 f[0,c],只需要更改 f,代价 1;如果 f>c,相当于要连带着 c 一起增加,代价 2

fcf>c 的边分开考虑。

  1. fc 的边。记两端是 uv

    如果 f 减小了,相当于退流,于是连边 (v,u,f,1)

    如果 ffc,相当于在合法范围内增大流,于是连边 (u,v,cf,1)

    如果 f>cf,c 就要一起增加,于是连边 (u,v,+,2)

  2. f>c 的边。记两端是 uv

    因为要保证最终流量 容量,一开始直接让 f 退掉 fc 的流量。将 fc 累加进答案里。

    如果 c<ff,相当于一开始不让 f 减小到 c,而是减小到最终的 f;而是让 c 增加。一来一去费用就抵消了,于是连边 (v,u,fc,0)

    如果 fc,就是一开始减小后继续减小。于是连边 (v,u,c,1)

    如果 f>f,连边 (u,v,+,2)

最小费用可行流。

posted @   FLY_lai  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示