poj1328解題報告(貪心 線段交集)

2021-07-02 03:28:47 字數 810 閱讀 2564

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排序,對於當前的乙個圈,看看是否下乙個海島是否可以在圈內,如果可以就在看下乙個,...