POJ 2074 視線問題

2021-06-23 08:33:58 字數 508 閱讀 2412

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

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

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

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

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

1 10

2 911 12

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

POJ 2074 直線相交

思路比較直接。根據house的位置與每乙個obstruction之間的相對位置,求出在line上不能夠看到的區域area的位置。對所有的位置進行線性掃瞄,找出最長的通視距離,這個掃瞄過程需要細緻。最後還有幾個致命的trick,自己動手吧,wa看dicuss中的測試資料.include include...

POJ 2074 直線交線段)

原題 line of sight 題意 站在一條線段property line上,去看另一條線段home,有一些障礙物擋著視線,求pl最長連續區間可以看另一條線段home的全貌。圖示 思路 1.去除不符合條件的障礙物 2.把每條線段擋住的區間求出來,然後遍歷一遍求最大區間即可。include inc...

區間覆蓋問題 SDUT2074

用i來表示x座標軸上座標為 i 1,i 的長度為1的區間,並給出n 1 m 200 個不同的整數,表示n個這樣的區間。現在要求畫m條線段覆蓋住所有的區間,條件是 每條線段可以任意長,但是要求所畫線段的長度之和最小,並且線段的數目不超過n 1 n 50 輸入包括多組資料,每組資料的第一行表示點n,和所...