描述
假設滑行是無限直線。土地位於海岸的一側,海洋位於另一側。每個小島都位於海邊。並且位於滑行的任何雷達裝置只能覆蓋d距離,因此如果它們之間的距離最多為d,則可以通過半徑裝置覆蓋海中的島嶼。
我們使用笛卡爾座標系,定義滑行是x軸。海側在x軸上方,陸側在下方。考慮到每個島嶼在海中的位置,並考慮到雷達裝置覆蓋範圍的距離,您的任務是編寫乙個程式,以找到覆蓋所有島嶼的最小數量的雷達裝置。注意,島的位置由其xy座標表示。
這個題最開始是想以雷達為圓心來判斷圓內的點,發現不知道如何判斷幾個點是否在乙個圓內,而且不知道雷達的座標,後來換思路(網上借鑑),要以點為中心,跟x軸相交於兩點,在這條線上的雷達都可以包含這個點,要得到雷達最小,就要使得線段重合得最多,問題變成了貪心+區間線段問題。
#include
#include
#include
using namespace std;
const int maxn = 1010;
int t, n, d;
struct node
a[maxn];
bool operator < (const node &a, const node &b)
int solve()
else
}return ans;
}int main()
else
else}}
if (flag)
else
}return 0;
}
安裝雷達POJ 1328(貪心)
翻譯過來就是 解題思路 把這個二維的問題轉化為轉化為一維的問題。如上圖所示,只需要雷達安裝在這個區間中的話,雷達就能夠覆蓋到上面的島嶼。現在這個問題又變成區間排程問題了。但是還有乙個問題就是在這個區間中說明位置上放置雷達呢?這個區間可是有無數個點,列舉肯定不可能。解決方向如下 說實話作為乙個小白而言...
POJ 1328 放置雷達
這是一道貪心的題目,首先我們要知道,我們放置雷達的話我們可以做乙個轉換,就是已知島嶼的點座標的時候,我們可以算一下,這個點以d為半徑與x軸交點之間的線段在x軸上的投影,然後我們只需要在這個投影範圍內設定乙個雷達就可以了。然後我們讀入資料的時候,因為題目中說道,如果計算不出結果我們就輸出 1,一般來是...
POJ1328貪心放雷達
題意 有乙個二維座標,y 0是海,y 0是陸地,然後只能在y 0的岸邊上放雷達,有n個城市需要被監控,問最少放多少個雷達。思路 貪心去做就行了,其實題目不難但是這個題目過的並不怎麼順利,哎!一開始我的想法是按照x排序,然後從左往右乙個乙個放置雷達,第乙個放在第乙個點相切的右側,結果果斷wa了,然後就...