網路流24題

2022-02-05 02:46:37 字數 983 閱讀 5629

經典問題,做了一部分

太水的就不記錄了

最大流是對於一種完整的匹配的處理,一條路乙個貢獻。要求匹配盡可能多。

費用流是對於乙個路徑的最值的處理,每條邊自己的費用。再匹配最多前提下,匹配的費用達到最值。

難點就是對於條件狀態的設計

[網路流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...