POJ 2074 視線問題

如果求“能看見的部分”不是很好求的話,那麼我們就來看看哪些地方是看不見的。


一開始看錯了題意,把“不能完全看見” 錯看成了 “完全不能看見”, 結果樣例都沒算對……不過,這兩件事之間倒是非常像:


“不能完全看見”的區域是,對於每一個障礙物,房子的左端點連障礙的右端點,右端點連障礙的左端點,交於觀察線,其間的部分就不能看到完整的房子(原因是,至少左端點和右端點是看不見的);


“完全不能看見”的區域是,房子的左端點連障礙左端點,右端點連右端點,交出來的區域,在此區間內完全不能看到房子。


得到了很多線段,之後就是問觀察線上最長的空餘線段了…… 我們只需要將所有線段排序,然後掃一遍就可以得到答案。問題在於怎麼排序,我一開始以起始座標排序爲第一關鍵字排序了,結果華麗的WA了……因爲如下的3條線段在一起時,你就會算錯了:


1 10

2 9

11 12


正確的做法應該是以結尾爲第一關鍵字排序,這樣掃描的順序就是9-1-10-11…… 就對了。這個問題白書上講過,我還給新生們講過,結果自己錯了一次纔想起來……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章