網路流雜題 一

2022-03-16 19:19:00 字數 2376 閱讀 7988

網格圖在網路流中往往對應著黑白染色,當然還有四色染色等奇怪的東西。

建圖並不難,但是二分的思想是很好的。

考慮如何檢驗乙個答案$x$,將黑點視為二分圖的左部點,白點視為二分圖的右部點。

一次操作對應一組相鄰黑白點$+1$,所以直接建圖看能否跑滿流就完了。

然而需要注意,顯然僅當黑點數=白點數時,答案具有單調性。

然而對於黑點數不等於白點數,答案只可能為乙個固定值,只要檢查單點就可以了。

對於行列關係的建圖,可以分別將行列放在二分圖的兩側,行列連邊表示行列的交點。

題中的限制為至少,所以可以用上下界最小可行流來解決。

利用本題並沒有規定上界,乙個更好的解決辦法是將至少放置轉化為至多放置,

即考慮刪掉點的過程,這樣可以直接用流量進行最大的限制。

似乎是乙個常見的套路,將原圖中的節點按不同的狀態拆分。

在本題中可以表現為每個時間拆點,然後可以直接建邊就好了。

本題可以通過二分答案來確定答案的大小,另乙個好打的(或許也會更快)做法是直接在殘量網路上加點/加邊。

最小割可過。

當然正解是平面圖轉對偶圖,

將平面圖割出的每個塊視作對偶圖中的乙個點,

在塊之間建邊,邊權即分割兩個塊的邊的流量。

這個東西蠻好理解的(尤其是雙向邊流量相同時),畫畫圖就好了。

同一行列必須選乙個點,所以將點連成一串解決。

相鄰兩個點的限制為距離不超過$d$。

考慮$inf$邊$(a,b)$的作用為$s->a$或$b->t$必須割乙個。

所以對於有限制的(即相鄰的)每個點對$(i,j)$,從$i$的第$k$個副本,向$j$的第$k-d$個副本連$inf$邊就好了。

因為複雜度允許$o(n^3)$,

單調指標維護每個區間對應的最大長度,

然後區間$dp$統計一下就好了,求大神教我網路流做法。

選擇兩個點,對應乙個收益。

算是個最簡單的最大權閉合子圖。

因為收益次數並不多,對每個收益新建乙個點,連一些$inf$邊就好了。

還是一道最大權閉合子圖題,然而兩側對應了不同的選擇。

因為收益次數並不多,對每個收益新建乙個點,連一些$inf$邊就好了。

還是一道最大權閉合子圖題,然而二者乙個選而乙個不換會對應乙個損失。

這個時候我們可以向$dc$大神學習解方程技巧,通過奇怪的邊權來因為收益次數並不多,對每個收益新建乙個點,連一些inf邊就好了。

因為收益次數很多,對每個收益新建乙個點的做法$t$掉了。

這個時候就可以學習大神的技巧,在造成收益的點$(i,j)$之間建邊。

具體來說,將每個點分別連$s$,$t$,流量分別為該點造成的收益和,選擇該點的花費。

割兩個方向分別代表著不選/選。

這樣對於$(i,j)$均選,$(i,j)$均不選的收益都是正確的。

對於$(i,j)$只選乙個,會導致收益多獲得了乙份/損失沒有統計,所以在$(i,j)$ $(j,i)$之間連邊$2*val_$就可以統計這乙份貢獻。

似乎是乙個名為最小割樹的資料結構。

演算法流程大概是:

初始集合為全部點集。

每次任取集合中的兩個點$a$ $b$,跑出二者之間的最小割。

在$a$ $b$之間建邊,為最小割的權值。

$s$ $t$一定不聯通,將$s$ $t$兩個集合分別進行分治就好了。

最終任意兩點的割,對應著兩點樹上的割,即唯一路徑的最小邊權。

這個玩意就並不會證明,但是結論好背,**好打。

直接拆點限制點的流量,費用流。

裸的上下界最小費用可行流。

然而做到這裡的時候並不會這個優秀的演算法。

所以亂搞出了乙個奇怪的演算法。

給一些邊權加上$-inf$,這樣在最小費用的前提下一定會流滿這條邊,然後問題就解決了。

$herk2$ $kx$大神告訴我,這個做法就很沒有拓展性,就很$five$。

然而$cbx$告訴我,對於上下界費用流,只要對下界部分用這個做法,上下界之間的部分用普通流就好了,大神告訴我這個做法就很帥。

因為大神$cbx$>$rk2$,顯然$cbx$大神是對的。

剛開始考慮的是正向考慮,即正常人的思維方式,然後這個圖就很不可建。

正解的做法是逆向考慮,倒數第$k$輛修的車,只造成了$k$倍修車時間的貢獻。

所以將每個修車師傅拆為$n$個點,分別表示修的倒數第$k$輛車就好了。

又是一類套路題?

配對問題往往利用一些特殊性質,

劃分為二分圖的形式,分別連在$s$,$t$上,之間連邊就好了。

該題中的劃分表現為質因子個數的奇偶性。

與《修車》一題的建圖就比較類似,然而暴力建圖必死。

然而本題中拆點的限制就表示,當倒數第$k$輛車還沒修時(假設修車=做菜),倒數第$k+1$輛車是沒用的。

所以在增廣到某師傅修倒數第$k$輛車的節點的時候,新建第$k+1$個節點副本就好了。

網路流 24 題

1 搭配飛行員 題意 n個飛行員,其中有m名飛行員是正駕駛員。飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。思路 裸二分圖匹配 最大流 題 版本一 網路流做法 引入源點s 0以及匯點t n...

網路流24題

學會網路流演算法後,我們要做的就是把問題轉化成網路流問題。求二分圖最大匹配。網路流建模要找到問題的關鍵特點,用連邊,流量 以及費用 把原問題轉化成網路流問題,包括最大流,最小割,費用流。二分圖最大匹配的特點是每個點最多屬於一條匹配邊。這相當於是說,每個點只能流過一次。要求的是最大匹配,可以得出建模為...

網路流24題

經典問題,做了一部分 太水的就不記錄了 最大流是對於一種完整的匹配的處理,一條路乙個貢獻。要求匹配盡可能多。費用流是對於乙個路徑的最值的處理,每條邊自己的費用。再匹配最多前提下,匹配的費用達到最值。難點就是對於條件狀態的設計 網路流24題 餐巾計畫問題 費用流建模 考慮每天一定有ri條髒毛巾,所以髒...