上下界網路流及費用流學習筆記

2021-10-01 06:57:41 字數 1892 閱讀 9678

前言

不錯的文章:

無源匯上下界可行流:

模型:乙個網路,求出乙個流,使得每條邊的流量必須≥

l\ge l

≥l且≤

r\le r

≤r,每個點必須滿足總流入量 = 總流出量 (流量守恆) (這個流的特點是迴圈往復,無始無終)

考慮到如果存在乙個可行流,那麼每條邊的流量至少是 l

ll,於是我們可以預先讓它先流 lll

這樣以後乙個點流入量可能就不為流出量了

我們考慮求出乙個附加流,每條邊的最終流量為附加流流量加上 lll

具體而言,我們建邊建成 (u,

v,r−

l)

(u,v,r-l)

(u,v,r

−l)

考慮到最後要讓流量平衡,分類討論:

如果乙個點的初始流入 = 流出那麼它平衡了

如果初始流入 > 流出,那麼這個點在附加流中流入 < 流出,稱為 a

aa 類點

如果初始流入 < 流出,那麼附加流流入 > 流出,稱為 b

bb 類點

記差量為 ∣δ∣

|\delta|

∣δ∣

為了使流量平衡,我們建立超級源匯 s,t

s,ts,

t,ss

s 向 a

aa 類點連邊,流量為 ∣δ∣

|\delta|

∣δ∣b

bb 類點向 t

tt 連邊,流量為 ∣δ∣

|\delta|

∣δ∣

容易發現,與源點匯點s,t

s,ts,

t向連的邊邊權和是相等的

有解當且僅當把不平衡的流量填平,也就是 s,t

s,ts,

t 的所有出邊入邊滿流

跑乙個 s

ss 到 t

tt 的最大流即可

有源匯上下界可行流

源點和匯點的流量始終不會平衡

考慮到源點出去的流量 = 匯點進的流量,匯點向源點連流量 +

∞+\infty

+∞的邊就可以平衡

整個可行流的流量就是匯點到源點那條邊的流量

有源匯有上下界最大流

在滿足可行即流量平衡的條件下流量最大

建圖如上,我們發現殘餘網路中有些邊是沒有跑滿的

把與超級源匯的邊斷開,然後在殘餘網路上跑乙個原圖 s,t

s,ts,

t 的最大流

最終的最大流需要加上原本的可行流

最小流可以倒過來跑,t

tt 到 sss

無源匯上下界最小費用可行流

同樣建立超級源匯 s,t

s,ts,

t 對於邊 (u,

v,l,

r,co

st

)(u,v,l,r,cost)

(u,v,l

,r,c

ost)

,建邊 (u,

v,r−

l,co

st

)(u,v,r-l,cost)

(u,v,r

−l,c

ost)

,並將初始值加上 l∗c

os

tl*cost

l∗cost

對於那些流量不平衡的點,建邊同 「 無源匯上下界可行流 」,費用為 0

然後跑 s

ss 到 t

tt 的最小費用最大流

有源匯加一條原圖中 (t,

s,∞,

0)

(t,s,\infty,0)

(t,s,∞

,0)

上下界費用流

codeforces 708d incorrect flow 這是道可行流最小費用的題目,這題好神奇。看這老哥的題解就ok了。戳這 我覺得他少說了一條邊,但 中卻體現了,就是一條流量為 f,f 的邊,費用為0,就是固定流量的一條邊。還要注意一點是,f c 的時候,f 往下調到 c 以下時,c 是不動...

上下界網路流學習筆記

一些點,一堆邊,每條邊要滿足流量限制 l,r 先令每條邊流量等於流量下限,得到初始流,初始流可能不滿足流量守恆,再建出殘量網路 上限 下限 求出可能不滿足流量守恆的附加流,使附加流和初始流合併後滿足流量守恆 定義 a i 表示初始流中流入量 流出量 若 a i 0 表示流入量大於流出量,附加量需要流...

學習筆記 上下界網路流

上下界網路流本質上是給流量網路的每一條便設定了流量上界 c u,v 和下界 b u,v 無源匯上下界可行流 給定無源匯流量網路 g 詢問是否存在一種標定每條邊流量的方式,使得每條邊流量滿足上下界同時每乙個點流量平衡。不妨假設每條邊已經流了 b u,v 的流量,設其為初始流。同時我們在新圖中加入 u ...