Day5網絡流
算法
無源匯上下界可行流
先強制流過l的流量
從s到每個正權點連流量為l的流量
從每個負權點向t連-l的流量
如果容量為0,則不連邊
有源匯上下界最大流
去掉下界
先求出可行流
再求S到T的最大流
有源匯上下界最小流
直接應用
poj1149
我的思路
建一個點S,到每個顧客,連INF的邊,每個顧客
正解
1.用分層圖,建n*m個點
2.直接從S向每個人連邊,記錄下每個豬圈打開的人的先後順尋,先來的人向後來的人連邊
BZOJ2406
Solution
路徑覆蓋模型
路徑覆蓋無交集
鏈覆蓋可以有交集
起點,終點的度數都為1
最小化$n-\sum{d}$=最大化$\sum{d}$d為入度
把原圖的點都進行拆點
路徑覆蓋:
若i,j有邊,則從i到j‘連邊
所有邊的邊權均為1
鏈覆蓋:
用floyd求傳遞閉包
從一個點向它能到達的點都連邊
用最小流解決
鏈覆蓋把每個點的上限改為INF
魔術球問題
Solution
CTSC2006
最小鏈覆蓋
Dilworth定理
例如<=號
自反性:x<=x
反對稱性:x<=y , y<=x —>x==y
傳遞性:x<=y,y<=z—>x<=z
(<,>不滿足偏序關系,不滿足第二條性質)
(DAG滿足偏序關系,有向圖不滿足)
反鏈:兩點之間不能相互到達
定理:
TJOI2016XX數學
暴力
拆成n*m個點,每個點的權值下界為給定的權值,上界為INF
優化
對所有點選一條點權和最大的
從左下到右上DP
時間分層
網絡流24題星際XXXX
當最大流為k的時候結束
[HNOI2007]緊急疏散
回路限制
POI2010
solution
給每條邊定向&&判斷是否連通
每條邊定向後會使一個點的入度加1,會使一個點的入度減1
先隨便定向並保留一次反向機會
可以把每次反向看成一條權值為2的增廣路
把點權預先除以二,驗證圖是否能滿流
BZOJ4215
對一個網格進行黑白染色,搞成二分圖
用流量為2的邊去限制度數為2
如果圖滿流,那麽就存在所有蛇都構成環的方案
找方案的時候看哪些邊滿流了
如果蛇不構成環,
對於邊界上的點,設置其權值為[1,2],對於非邊界上的點,其權值為[2,2]
求最大流
最大權閉合子圖
模型
所有與S相連的點視為不選擇
所有與T相連的點視為選擇
有環的情況可以不縮點,(縮點也可以)
TJOI2015 線性代數
Bij*Ai*Aj
Ci*Ai
COdefoeceXXX
若不考慮限制條件
限制條件
從S向新加的點連Wi邊
從新加的點向中間的三個點連INF的邊
CEOI?
轉化為最小割
BZOJ3774
平面圖對偶圖
狼抓兔子
NOI2010海拔
相當於S和T之前求最小割
距離限制
HNOI拍照
變形
CTSC2009
根據曼哈頓距離的性質
分別最優化橫縱坐標
Day5網絡流