貪心演算法訓練 六 噴水裝置 區間覆蓋問題

2022-07-31 20:09:10 字數 1078 閱讀 5100

1. 問題描述

長 l 公尺,寬 w 公尺的草坪裡裝有 n 個澆灌噴頭,每個噴頭都裝在草坪的中心線上(離兩邊各 w/2 公尺)。我們知道每個噴頭的位置(離草坪中心線左端的距離),以及它能覆蓋到的澆灌範圍。請問如果要同時澆灌整塊草坪,最少需要開啟多少個噴頭?

2. 輸入格式

輸入包含若干測試資料

每組資料的第一行是整數n、l 和 w 的值,其中 n <= 10000

接下來的 n 行,每行包含 2 個整數,給出乙個噴頭的位置 x 和澆灌半徑 r

3. 輸出格式

對每組測試資料輸出乙個數字,表示要澆灌整塊草坪所需噴頭數目的最小值。如果所有噴頭都開啟還不能澆灌整塊草坪,則輸出 -1

4. 樣例輸入

3820

2534

1127

210213

316219

43101

3593

61310

1531

191

5. 樣例輸出

6

2-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組測試資料 每一組測試資料的第一行有乙...