poj 3308(最小割求解最小点权覆盖)
生活随笔
收集整理的這篇文章主要介紹了
poj 3308(最小割求解最小点权覆盖)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
火星人侵略地球,他們意圖登陸破壞某個地區的兵器工廠。據探子回報,火星人登陸的地區為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(最小割求解最小点权覆盖)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj 3469(最小割)
- 下一篇: poj 3614(最大流)