經典問題,做了一部分
太水的就不記錄了
最大流是對於一種完整的匹配的處理,一條路乙個貢獻。要求匹配盡可能多。
費用流是對於乙個路徑的最值的處理,每條邊自己的費用。再匹配最多前提下,匹配的費用達到最值。
難點就是對於條件狀態的設計
[網路流24題]餐巾計畫問題——費用流建模
考慮每天一定有ri條髒毛巾,所以髒毛巾和乾淨毛巾分開處理。
最長不下降子串行問題
怎樣規定一定選擇了長度為最長的s的?
起始點一定f[i]=1,終止點一定f[i]=s!
然後拆點覆蓋
可以選擇多次就1,n的容量是inf
航空路線問題
看似是環,由於知道一定經過1,n,所以就是1到n的兩條不相交的路徑了
但是經過的點是哪些不知道還要最大化。但是知道兩條路的起點終點。
所以直接最大費用最大流了。
(星際競速那個題,不知道起點終點,但是知道所有的點都經過一遍,所以可以s到出點到t,入點到出點)
找方案,dfs兩遍,對邊打標記
由於(1,n)的邊可以走兩次,所以加入兩次(1,n)的邊。
最長k可重區間集問題
和平常思路不太一樣的建模
發現最小割辦不了不能同時相交k個的限制,
然後考慮費用流處理最優化問題
但是k個相交怎麼辦?
最大流來限制!利用分流和匯流
離散化,s-1(k,0); i-i+1(k,0) ; 2n-t(k,0),代表同時最多可以重k次
區間:l-r(1,len),流量為1的道理是,限制同一時間已經占用了乙個坑位,之後只能少選擇乙個
匯流的時候,也滿足乙個區間結束了,乙個坑位空出了。
最大費用最大流即可。
(原來的費用流中最大流都是為了把要求選擇的都選上,但是這裡恰好是利用,"最大是這麼多"的限制!)
最長k可重線段集問題
投影,二維變成一維,但是(l,l)的點不能體現選擇一次,拆點,注意是開區間。是否包含處理好即可。
網路流 24 題
1 搭配飛行員 題意 n個飛行員,其中有m名飛行員是正駕駛員。飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。思路 裸二分圖匹配 最大流 題 版本一 網路流做法 引入源點s 0以及匯點t n...
網路流24題
學會網路流演算法後,我們要做的就是把問題轉化成網路流問題。求二分圖最大匹配。網路流建模要找到問題的關鍵特點,用連邊,流量 以及費用 把原問題轉化成網路流問題,包括最大流,最小割,費用流。二分圖最大匹配的特點是每個點最多屬於一條匹配邊。這相當於是說,每個點只能流過一次。要求的是最大匹配,可以得出建模為...
網路流24題
按馬的軌跡連邊,最後是一張二分圖,求最大匹配。可以跑匈牙利直接求出來,也可以連源點和匯點跑dinic。我是學二分圖的時候寫的,當時寫的是匈牙利。我當時碼風好奇怪 1 include 2 define id x,y x 1 n y 3 define new p p tmp ecnt 45 struct...