描述:
假設海岸線是一條無限延伸的直線。它的一側是陸地,另一側是海洋。每一座小島是在海面上的乙個點。雷達必須安裝在陸地上(包括海岸線),並且每個雷達都有相同的掃瞄範圍d。你的任務是建立盡量少的雷達站,使所有小島都在掃瞄範圍之內。
資料使用笛卡爾座標系,定義海岸線為x軸。在x軸上方為海洋,下方為陸地。
樣例1如圖所示
輸入格式:
第一行包括2個整數n和d,n是島嶼數目,d是雷達掃瞄範圍。
接下來n行為島嶼座標。
輸出格式:
乙個整數表示最少需要的雷達數目,若不可能覆蓋所有島嶼,輸出「-1」。
輸入樣例#1:
3 2輸出樣例#1:1 2-3 1
2 1
2貪心,把問題轉化成島嶼覆蓋的區域必須有雷達,之後類似於活動安排問題
#include#include#include
#include
using
namespace
std;
#define n 1005
intn,d;
struct
island
is[n];
struct
miku
}cd[n];
double calc(double
x)bool
vis[n];
intmain()
}for(int i=1;i<=n;i++)
sort(cd+1,cd+n+1
);
int ans=0
;
for(int i=1;i<=n;i++)
ans++;}}
cout
return0;
}
P1325 雷達安裝
描述 假設海岸線是一條無限延伸的直線。它的一側是陸地,另一側是海洋。每一座小島是在海面上的乙個點。雷達必須安裝在陸地上 包括海岸線 並且每個雷達都有相同的掃瞄範圍d。你的任務是建立盡量少的雷達站,使所有小島都在掃瞄範圍之內。資料使用笛卡爾座標系,定義海岸線為x軸。在x軸上方為海洋,下方為陸地。樣例1...
YBTOJ Luogu P1325 雷達安裝
有 n 個點,第 i 個點的座標是 x i,y i 現在要你在 x 軸上標記若干個位置,使得每個點都能被乙個以被標記位置為圓心,半徑為 d 的圓覆蓋。求最少標記多少位置。首先任意一點如果的 y 座標如果大於 d 那麼肯定覆蓋不到,直接輸出 1。接下來考慮用貪心求解這個問題。容易發現,點 i 要被覆蓋...
雷達安裝(貪心)
題目描述 假定海岸線是一條無限延伸的直線,陸地在海岸線的一邊,大海在另一側。海中有許多島嶼,每乙個小島我們可以認為是乙個點。現在要在海岸線上安裝雷達,雷達的覆蓋範圍是d,也就是說大海中乙個小島能被安裝的雷達覆蓋,那麼它們之間的距離最大為d。我們使用平面直角座標系,定義海岸線是x軸,大海在x軸上方,陸...