題意:
有乙個二維座標,y>0是海,y<=0是陸地,然後只能在y=0的岸邊上放雷達,有n個城市需要被監控,問最少放多少個雷達。
思路:
貪心去做就行了,其實題目不難但是這個題目過的並不怎麼順利,哎!,一開始我的想法是按照x排序,然後從左往右乙個乙個放置雷達,第乙個放在第乙個點相切的右側,....結果果斷wa了,然後就又想到可以求出每個城市的可放置區間,然後去貪心,還是wa了,原因是排序的時候還是按照x從小到大排序的,後來看了討論區一眼,才把排序是按照左區間排序的,一開始隱約考慮過這個,但是感覺按照x排沒有錯(一開始的想法),還有就是這個題目的資料比較坑人,要考慮d是負數或者y是負數的情況,如果全面的想,d是負數的話,如果所有的y都<=0那麼輸出0,否則就輸出-1,如果y有大於0的,同時最大的y比b大,那麼就輸出-1,然後就是正常貪心,貪心的時候遇到y<0的點直接跳過去不考慮,有點小坑啊,不過是乙個不錯的簡單題。
#include#include#include#include#define n 1000 + 10
using namespace std;
typedef struct
reg;
reg reg[n];
int mark[n];
bool camp(reg a ,reg b)
double minn(double x ,double y)
double maxx(double x ,double y)
int main ()
printf("case %d: " ,cas ++);
if(!jude1)
if(jude2)
double nowxl ,nowxr;
int anssum = 0;
sort(reg + 1 ,reg + n + 1 ,camp);
for(i = 1 ;i <= n; ++i)
else
}printf("%d\n" ,anssum);
}return 0;
}
poj 1328 雷達覆蓋 貪心
題目 題意 在x軸上某些位置裝雷達,問怎麼才能使海島p被訊號覆蓋,有n個海島,雷達覆蓋範圍是d。分析 考慮乙個海島p,對於覆蓋它的雷達放的最優的位置是它在圓圈的邊緣上,因為這樣這個雷達就可以覆蓋更多其他的海島。那麼先按x排序,對於當前的乙個圈,看看是否下乙個海島是否可以在圈內,如果可以就在看下乙個,...
安裝雷達POJ 1328(貪心)
翻譯過來就是 解題思路 把這個二維的問題轉化為轉化為一維的問題。如上圖所示,只需要雷達安裝在這個區間中的話,雷達就能夠覆蓋到上面的島嶼。現在這個問題又變成區間排程問題了。但是還有乙個問題就是在這個區間中說明位置上放置雷達呢?這個區間可是有無數個點,列舉肯定不可能。解決方向如下 說實話作為乙個小白而言...
POJ 1328 放置雷達
這是一道貪心的題目,首先我們要知道,我們放置雷達的話我們可以做乙個轉換,就是已知島嶼的點座標的時候,我們可以算一下,這個點以d為半徑與x軸交點之間的線段在x軸上的投影,然後我們只需要在這個投影範圍內設定乙個雷達就可以了。然後我們讀入資料的時候,因為題目中說道,如果計算不出結果我們就輸出 1,一般來是...