自己最近準備學習網絡流,轉載別人的做題記錄學習學習QAQ
獻上幾篇論文:1)《最小割模型在信息學競賽中的應用》
1、bzoj1066(最大流)
題意:戳這裏
思路:很明顯拆點最大流模型,然後對於每個點每個高度流量限爲1,那麼根據最大流即爲可以出去的蜥蜴的數量。
2、bzoj1077(費用流)
3.bzoj1391(最小割)
題意:戳這裏
思路:有點像最大權閉合圖。。可以利用最小割的性質建圖:
<S,任務,收益>
<機器,T,購買費用>,<任務,機器,租用費用>
這樣,如果與T相連的邊爲割,表示購買機器花費更小。
如果與S相連的邊爲割,表示任務花費太大,不做任務更優(收益爲0)。
如果<任務,機器>邊爲割,表示任務花費太大,不做任務更優(收益爲0)。
最後總收益-最大流即爲答案
4、bzoj1412(最小割)
題意:有一些格子裏是狼,一些裏是羊,一些是空的,要使狼和羊的格子不相通,至少要堵多少條邊界。
思路:很明顯的最小割
5、bzoj1433(二分圖匹配)
題意:戳這裏
思路:需要牀位的爲一邊,提供牀位的爲一邊,認識連一條邊(包括自己跟自己),然後就是一個二分圖最大匹配。
6、bzoj1475(最大點獨立集)
題意:戳這裏
思路:Amber論文裏講到的題目,很明顯可以看出是個二分圖模型。。
但是不容易看出是求最大點權獨立集。那麼構圖就很顯然了。
7、bzoj1497(最大密度子圖)
題意:戳這裏
思路:可以轉化成最小割。具體看Amber論文。
8、bzoj1520(費用流)
題意:戳這裏
思路:很明顯的最小費用流
9、bzoj1532(最大流+二分)
題意:戳這裏
思路:二分最大分數score,那麼
<S,人,score>,<人,比賽,1>,<比賽,T,1>
判斷流量flow = m
10、bzoj1565(tarjan+最大權閉合圖)
題意:戳這裏
思路:首先先把保護關係建立有向邊,那麼如果出現環的話,環裏面的所有點,包括他能保護得點都不能取。。
那麼剩下的圖再進行最大權閉合圖的構圖
code:
11、bzoj1585(最小割)
題意:戳這裏
思路:
拆點最小割,保證每個點流量爲1
<S, 1, INF>
提到的點x : <x', T, INF>
對於每個點x,爲1或是提到的點: <x,x',INF>
對於每個點x,不爲1且不是提到的點:<x,x',1>
對於原圖每條邊x->y: <x', y, INF>和 <y', x, INF>
最大流即爲答案。。
ps..這一題跟usaco原題改動有點大。。害我做原題時進坑了。。
12、bzoj1711(最大流)
題意:戳這裏
思路:三分圖匹配,記得中間那個點要拆點限流量爲1
13、bzoj1741(最小點覆蓋)
題意:戳這裏
思路:把行列抽象出來成爲一個二分圖,有小行星就連一條邊。那麼題目就等價與求出最小的點覆蓋所有的遍。
14、bzoj1779(拆點最大流)
題意:戳這裏
思路:好像還不是很理解。。過後補上。
15、bzoj1797(最小割+tarjan)
題意:戳這裏
思路:首先跑一邊最大流。然後在殘餘圖中進行tarjan縮點。
那麼對於所有滿流邊:
如果連接S,T兩個強聯通分量,那麼一定是在最小割裏。
如果連接兩個不同的強聯通分量,可能出現在最小割裏。
16、bzoj1822(二分+最大流)
題意:戳這裏
思路:二分時間t,那麼就可以算出在這個時間內每個巫妖可以攻擊的數目。
然後建圖:
<S, 巫妖, 可攻擊數目>,<巫妖,可攻擊到的小精靈, 1>,<小精靈, T , 1>
最後判斷最大流是否爲小精靈個數
比較麻煩的是判斷巫妖是否攻擊到小精靈,需要一點計算幾何知識。
17、bzoj1834(網絡流模板)
題意:戳這裏
思路:<S, 1, K>, 先跑一邊最大流,然後在殘餘網絡的每條邊加上一條流量Inf費用爲擴容費用的邊
18、bzoj1877(最小費用最大流)
題意:戳這裏
思路:拆點,然後就是經典構圖了
19、bzoj1927(最小費用最大流)
20、bzoj1934(最小割)
題意:戳這裏
思路:分集合很典型的最小割的應用
最初選擇睡午覺 <S, i, 1>
最初選擇不睡午覺 <i, T, 1>
i與j爲好友, <i, j, 1> <j, i, 1>
最小割即爲答案。。這應該是pty大神論文最簡單的應用吧
21、bzoj1937(二分圖最大權匹配問題)
題意:戳這裏
思路:把所有邊分爲樹邊與非樹邊,那麼對於費樹邊i,連接u,v
權值wi>=wj(所有u,v路徑上的邊j),所以非樹邊只有可能變大,樹邊只有可能變小
即,對於非樹邊i即路徑上的任意樹邊j:
wi + di >= wj - dj
=> di + dj >= wj - wi
wj-wi爲定值,那麼等式幾乎就跟最大權匹配的頂標的式子一樣了。。
套用最大權匹配km算法。。
本來想用費用流,一想到邊很多就慫了。。
22、bzoj2039(最小割)
23、bzoj2127(最小割)
題意:戳這裏
思路:可利用二元關係建圖:
<S, A, w1/2>,<A, T, w2/2>
<S, B, w1/2> , <B,T,w2/2>,
<A, B, (w1+w2)/2>, <B, A, (w1 + w2)/2>
爲防止出現小數,可將所有流量都流量*2,最後/2即可。
答案即爲sum(喜悅值)- flow