poj 1328,題目鏈結
有一海岸線(x軸),一半是陸地(y<0)、一半是海(y>0),海上有一些小島(用座標點表示p1、
p2...),現要在海岸線上建雷達(覆蓋半徑r)。給出所有小島的位置,和雷達半徑,求最少需要多少個雷達?
1. 知道小島位置,和雷達半徑,那麼以小島為圓心,雷達覆蓋半徑為半徑畫圓,可以求出小島與x軸有
0(雷達無法覆蓋)、
1(雷達只能在這個點上才能覆蓋)、
2個交點(雷達在兩點之間都能覆蓋該小島)
2. 要求最少雷達多少個,即把雷達放在
1中線段的交集內。
那麼這就變成了線段交集問題。(貪心)
//404k 79ms
#include #include #include #include typedef struct taglineline;
void sortlinebuf(line *p, int num)
temppoint = sqrt(r*r - py[i]*py[i]);
pline[i].left = px[i]-temppoint;
pline[i].right = px[i]+temppoint;
} if (bimpossible)
else if (pline[i].right < templine.right)
} } printf("case %d: %d\n", ++casenum, rapar);
free(p);
free(pline);
} return 0;
}
POJ1328貪心放雷達
題意 有乙個二維座標,y 0是海,y 0是陸地,然後只能在y 0的岸邊上放雷達,有n個城市需要被監控,問最少放多少個雷達。思路 貪心去做就行了,其實題目不難但是這個題目過的並不怎麼順利,哎!一開始我的想法是按照x排序,然後從左往右乙個乙個放置雷達,第乙個放在第乙個點相切的右側,結果果斷wa了,然後就...
POJ 1328 貪心演算法
雷達安裝 時間限制 1000ms 記憶體限制 10000k 提交總數 109120 接受 24128 描述 假設滑行是無限直線。土地位於海岸的一側,海洋位於另一側。每個小島都位於海邊。並且任何位於滑行的雷達裝置只能覆蓋d距離,因此如果它們之間的距離最多為d 則可以通過半徑裝置覆蓋海中的島嶼。我們使用...
poj 1328 雷達覆蓋 貪心
題目 題意 在x軸上某些位置裝雷達,問怎麼才能使海島p被訊號覆蓋,有n個海島,雷達覆蓋範圍是d。分析 考慮乙個海島p,對於覆蓋它的雷達放的最優的位置是它在圓圈的邊緣上,因為這樣這個雷達就可以覆蓋更多其他的海島。那麼先按x排序,對於當前的乙個圈,看看是否下乙個海島是否可以在圈內,如果可以就在看下乙個,...