菜雞的模板很醜,就不貼了。算法
這玩意你不搞好就別作網絡流了,固然你是神仙當我沒說。網絡
把流量當作需求量/偏移量,而後用源匯調整,用來判斷可行性。函數
最小割定理:最小割=最大流。優化
最小割斷定定理:先跑一遍最小割。spa
一條邊可能在最小割:流滿,兩端點在不一樣\(SCC\)。模板
一條邊必定在最小割:流滿,起點和源點在同一個\(SCC\),終點和匯點在同一個\(SCC\)。class
通常用來當代價用,我如今碰到的模型最小割不知道比最大流多到哪裏去了。基礎
先加上貢獻,而後減掉代價。變量
就是那點東西,\(zsy\)教了我一個能夠跑特殊意義下費用流的帶負環的算法,然而我不打算寫。。。思考
有源匯=\(T->S\)連\(inf\)邊,就無源匯了。
先跑可行流。可行流就是先把每條邊的下界跑滿,而後新建超級源匯補流吸流。
思考這一類問題(包括一些並非上下界可是須要調整的模型)能夠經過水來形象的思考。
最大流就是在這個基礎上跑加上\(S->T\),最小流就是減掉\(T->S\),這裏的\(S,T\)都是指原來的源匯。
知足每一個變量是非負整數。
先用\(y_i,z_i\)等把全部不等式化成等式,而後用差分的奇技淫巧使得每一個變量只出現過兩次,一次正一次負。
這個必定要本身好好推一推,大概是源點像常數項爲負的連邊,常數項爲正向匯點連邊,負向正連邊。
最好一開始默認全部變量是零,而後你經過改變一個變量的值來平衡流量。
咱們常常會碰到好比說一個點像區間連邊的題,但這樣邊數會很大,又\(TLE\)又\(MLE\)。
因此線段樹優化連邊,主席樹優化連邊,線段樹合併優化連邊(好像都是線段樹?)
注意一些線段樹的東西在維護的時候想好怎麼連邊,好比線段樹合併的\(merge\)函數。
\(n\)很小區間個數不少能夠二維\(RMQ\)優化。
這是個神仙玩意,我尚未填完坑呢。