【bzoj1596】[Usaco2008 Jan]電話網絡

今天看到這道題覺得很有意思談談自己的看法。

Farmer John決定爲他的所有奶牛都配備手機,以此鼓勵她們互相交流。不過,爲此FJ必須在奶牛們居住的N(1 <= N <= 10,000)塊草地中選一些建上無線電通訊塔,來保證任意兩塊草地間都存在手機信號。所有的N塊草地按1..N 順次編號。 所有草地中只有N-1對是相鄰的,不過對任意兩塊草地A和B(1 <= A <= N; 1 <= B <= N; A != B),都可以找到一個以A開頭以B結尾的草地序列,並且序列中相鄰的編號所代表的草地相鄰。無線電通訊塔只能建在草地上,一座塔的服務範圍爲它所在的那塊草地,以及與那塊草地相鄰的所有草地。 請你幫FJ計算一下,爲了建立能覆蓋到所有草地的通信系統,他最少要建多少座無線電通訊塔。

題面如上。其實就是讓你選擇一些點,使整個圖被覆蓋,一個點只覆蓋自己和與自己相連的點。

記得劉汝佳藍書上有道題說距離不超過k的點被覆蓋,取當前這個點的k級祖先會最優。先來看看這道題吧,我們如果採用貪心策略的話,可以分三種情況討論下:
1 這個點的任意一個兒子被覆蓋了,那麼這個點就沒必要被覆蓋了。
2 這個點的父親被覆蓋了,那麼這個點也不要被覆蓋了、
3 這個點沒被覆蓋,這個點的父親沒被覆蓋,這個點的任意一個兒子也沒被覆蓋,那我們就覆蓋他的父親,就是這裏我理解了很久,感覺這裏有點問題,實際上是沒有問題的,因爲你想,當我們遇到第3種情況時,當前點的兒子是一定被覆蓋的,當然是它兒子被別的節點覆蓋(畫個圖,手推一下,如果他兒子沒被覆蓋,那麼他兒子就一定自己覆蓋自己了,有點繞。。)那麼我們就沒必要覆蓋當前節點,因爲覆蓋當前節點只會把自己覆蓋,兒子們都已經覆蓋過了,如果我們覆蓋當前節點的父親,那麼顯然會更優一些。

這樣的話,劉汝佳藍書上說的覆蓋k級祖先更好(留給讀者證明)這個結論就證出來了,這就是用局部最優來決策全局最優,貪心大法好。
這題貌似是BZOJ上的權限題,窮蛋加蒟蒻顯然出不起錢買個權限號,只能口胡口胡了。

發佈了95 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章