poj 3422 最小費用流

2022-08-17 13:12:14 字數 561 閱讀 9038

如果不是從費用流區做這個題幾乎不會想到用費用流

點有權值很容易想到拆點

問題是求最大sum ...  把權值取負 這樣最小費用流的相反數就是最大sum

源點s匯點t k為移動次數

矩陣中的點拆成入點出點 入點到出點連: 乙個1容量,-1*點權費用; 乙個k容量,0費用 兩條邊。

這樣能保證只在第一次經過點時獲得點的權值,並且可以多次經過乙個點

矩陣中的點:出點連向下面和右面的點 容量k,費用0

s連1,1的點 容量k費用0 n,n的點連t,容量k費用0

雖然費用是負的 但是沒有成負圈 經測試費用流成功ac...

int main()

}addedge(

0, 1, k, 0

); addedge(

2*n*n, 2*n*n+1, k, 0

); mcmf(

0, 2*n*n+1

); printf(

"%d\n

", -ans);

}return0;

}

poj3422 最小費用最大流

記得以前做過這樣類似的題,因為那時候求的是來回的最大值,直接使用的dp,而且對費用流並不是很清楚,然後又看到了這道題。對點進行拆分建圖,乙個點拆為兩個點a和b,在a和b之間建一條花費為輸入值容量為1的邊,然後再建一條花費為0容量為k 1的邊,對b點對於其右邊和下邊都建立一條容量為k花費為0的邊,加入...

POJ 3422 最大流最小費用

題目大意 給定一張網格圖,需要從 1,1 走到 n,n 走k條路,每次走到乙個格仔上會把它的值變為0並且加到sum上去,問sum的最大值是多少 題目解析 構圖考慮到走一次費用就變成了0,所以乙個點要拆成2的點兩個點之間有一條邊容量為1,另一條容量為k 1,費用為0 因為是最大費用,只要把所有的值變成...

poj 3422 最小費用最大流

思路 求從起點到終點走k次獲得的最大值,最小費用最大流的應用 將點權轉化為邊權,需要拆點,邊容量為1,費用為該點的點權,表示該點的權值只能獲取一次,另外,應該連一條容量為inf,費用為0的邊,因為每條邊都可以走多次。另外就是增加源點和匯點了,源點與起點連容量為k,費用為0的邊,表示可以走k次,同理終...