1. 問題描述
長 l 公尺,寬 w 公尺的草坪裡裝有 n 個澆灌噴頭,每個噴頭都裝在草坪的中心線上(離兩邊各 w/2 公尺)。我們知道每個噴頭的位置(離草坪中心線左端的距離),以及它能覆蓋到的澆灌範圍。請問如果要同時澆灌整塊草坪,最少需要開啟多少個噴頭?
2. 輸入格式
輸入包含若干測試資料
每組資料的第一行是整數n、l 和 w 的值,其中 n <= 10000
接下來的 n 行,每行包含 2 個整數,給出乙個噴頭的位置 x 和澆灌半徑 r
3. 輸出格式
對每組測試資料輸出乙個數字,表示要澆灌整塊草坪所需噴頭數目的最小值。如果所有噴頭都開啟還不能澆灌整塊草坪,則輸出 -1
4. 樣例輸入
38202534
1127
210213
316219
43101
3593
61310
1531
191
5. 樣例輸出
62-1
6. 思路分析
錄入資料的同時計算出它的有效灌溉半徑(勾股定理),start = x - sqrt(r^2 - (w/2)^2),end = x + sqrt(r^2 - (w/2)^2),排序,在選定位置範圍內,依次尋找最大的 end。
7.**(直接複製資料可能有問題,建議手動輸入)
#include #include#include
#include
#include
using
namespace
std;
intn,cnt,l,h,x,r;
struct
sega[
20005
];bool cmp(const seg& x,const seg&y)
void
read()
}void
solve()
}if(bj)
cout
}int
main()
return0;
}
噴水裝置 貪心演算法
長l公尺,寬w公尺的草坪裡裝有n個澆灌噴頭。每個噴頭都裝在草坪中心線上 離兩邊各w 2公尺 我們知道每個噴頭的位置 離草坪中心線左端的距離 以及它能覆蓋到的澆灌範圍。請問 如果要同時澆灌整塊草坪,最少需要開啟多少個噴頭?輸入包含若干組測試資料。第一行乙個整數t表示資料組數。每組資料的第一行是整數n ...
噴水裝置 貪心演算法
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝置,...
噴水裝置(一)貪心演算法
聽說這是 貪心演算法 的乙個簡單應用,雖說是簡單,但是對我來說,確實不簡單。說下面說有用的 題目描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0輸入描述 第一行m表示有m組測試資料 每一組測試資料的第一行有乙...