poj 3308(最小割求解最小點權覆蓋)

2021-07-12 07:44:28 字數 554 閱讀 1246

火星人侵略地球,他們意圖登陸破壞某個地區的兵器工廠。據探子回報,火星人登陸的地區為n*m大小的地域,而且每乙個火星人的著陸點座標已知。

火星人很強悍,只要有乙個火星人著陸後能夠倖存,他必定能毀壞這片區域的全部兵工廠。為了防止這種情況發生,必須保證在火星人著陸的一瞬間把他們全部同時殺死。

現在防衛隊有乙個雷射槍,開一槍就能把 在同一行(或同一列)著陸的火星人全部殺死。但是這種雷射槍的使用是有代價的,把這種雷射槍安裝到不同行的行首、或者不同列的列首,費用都不同。現在已知把雷射槍安裝到任意位置的費用,總的花費為這些安裝了雷射槍的行列花費的乘積。

問怎樣安裝雷射槍才能在殺死所有火星人的前提下費用最少?

解題思路:這裡因為要求的是乘積,不是加和,所以需要用log( a )+log( b ) = log( a * b )轉化;

對於矩陣中的乙個需要覆蓋的點a,覆蓋該點所在的行的花費是 wr ,覆蓋該點所在列的花費是 wc;把點 a 按行標和列標拆成 x 和 y 兩個點,從源點連一條到 x 的邊,權值為log( wr ),x 和 y 之間連一條權值為無窮大的邊,y 到匯點連一條權值為 log( wc )的邊,求最大流即可。

poj 3308 最小點權覆蓋 最小割

思路 裸的最小點權覆蓋,建立超級源點和超級匯點,將源點與行相連,容量為這行消滅敵人的代價,將列與匯點相連,容量為這列消滅敵人的代價,對於每乙個敵人 x,y 連邊x y,容量為inf,這樣就說明選取的點覆蓋了那些邊 敵人 然後跑最大流求最小割即可。ps 這裡是乘積最小,要取對數轉化為和最小。1 inc...

網路流(最小割最大流) POJ3308

poj3308 題意 簡單的說就是有乙個方陣,告訴你方陣裡的一些位置有一些敵人傘兵,而且你有一些雷射槍,這些雷射槍有穿透效果,也就是如果擺在第一排的排頭話就可以殺死這一排的所有傘兵,當然也可以放在一列的列頭可以殺死一列的傘兵。在不同行或列建立雷射槍所需的費用不一樣,建立這些雷射槍的總費用是建立每個雷...

poj 1815 最小點割集

最小點割集求解方法 1.有向圖 把乙個點拆成 i,i n 2個點,之間容量為1。如果i,j 2個點在原圖中聯通,則將i n,j相連,容量為無窮大。然後求最小割,可見被最小割割到的都是容量是1的邊,如果割到一條inf,說明沒有最小點割集。而且那些邊必將連著i,i n,於是i就是被割的點。2.無向圖 把...