我決定繼續我的學術+數學風格,這種風格雖然有點難理解,但是定義精確,而且往往能反映出更多的性質,比語言描述往往更為簡潔。好吧,我們繼續我們的網路流的介紹。考慮乙個有向圖g=
(v,e
) ,其源點為
s ,匯點為
t,網路流實際上可以用水流模擬,比如說在
s 點出發很多(可以理解為無限多)的流量,容易發現,由於每條邊實際上都應當有乙個流量限制(模擬一下生活:水管都有最大通過量),所以到
t點的流量實際上有乙個上限,而不是無窮大。那麼,網路流中的最大流就是來求出這樣的上限的。
如果再考慮另乙個例子,比如說現在我們有無限多的貨物要通過乙個公路系統,公路系統上沒一條路都有乙個容量限制,同時還有收費站,每一噸貨物都要收費若干元(而且每一條路上的費用不一定相同),那麼同樣,我們也只能從起點
s 運一些貨物到終點
t,而不是無窮多。那麼,現在的問題就是,在運的貨物最多的情況下,怎樣使得所花費的費用最少?那麼這就是最小費用最大流了。
用神奇的數學方法描述成線性規劃的形式,就是像下面這樣: ma
ximi
zext
⎧⎩⎨⎪
⎪⎪⎪⎪
⎪⎪⎪a
11x1+
a12x2
…+a1
n≤c1
a21x1
+a22x
2…+a
2n≤c
2⋮am
1x1+
am2x
2…+a
mn≤c
m 其中,c
i 表示第
i 條邊的最大流量,那麼這個模型就很容易被看出了。
從上面這一大塊式子可以看出乙個流的三個特性:
但是,dinic短啊!
模運算的基本性質
給定乙個正整數p,任意乙個整數n,一定存在等式 n kp r 其中k r是整數,且 0 r p,稱呼k為n除以p的商,r為n除以p的餘數。對於正整數p和整數a,b,定義如下運算 取模運算 a p 或a mod p 表示a除以p的餘數。模p加法 a b p 其結果是a b算術和除以p的餘數,也就是說,...
棧和佇列的基本性質
棧是一種特殊型別的線性表,訪問 插入 刪除只能發生在棧頂。vector繼承自list類,所以裡面有實現相關的介面,stack類是其中的乙個實現類。peek 返回棧頂元素,push 壓入棧,pop 刪除棧頂元素並且返回。佇列是一種 fifo先進先出的資料結構。元素被追加到佇列的末尾,從頭部進行刪除。p...
單調棧的基本性質介紹
單調棧的定義 單調棧就是棧內元素單調遞增或者單調遞減的棧,單調棧只能在棧頂操作。為了更好的理解單調棧,則可將單調棧用生活情形模擬實現,例如 我們借用拿號排隊的場景來說明下。現在有很多人在排隊買可樂,每個人手裡都拿著號,越靠前的人手裡的號越小,但是號不一定是連續的。小明拿了號後並沒有去排隊,而是跑去約...