nyoj 噴水裝置

2021-07-30 18:55:23 字數 1011 閱讀 7345

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3 描述

現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri(0

輸入

第一行m表示有m組測試資料

每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝置,隨後的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。

輸出輸出所用裝置的個數

樣例輸入

2

52 3.2 4 4.5 6

101 2 3 1 2 1.2 3 1.1 1 2

樣例輸出

2

思路:其實只要算出 這個草地的斜邊長度, 然後只要全部圓的半徑合大於等於這個斜邊長度的一半就可以了

(但是必須丟棄半徑小於等於1的裝置,在橫中線上無論怎麼放,它是無法完全覆蓋草地的)。

x = sqrt(r*r-(h/2)*(h/2)),  這樣半徑為r的圓能夠覆蓋的長度為2x,  

剩下w-2x, 這樣遍歷下去, 當w<=0時,就滿足了。 

r=sqrt(x*x+h*h)    / 2          

總的r = sqrt(w*w+h*h) / 2   

簡化一下,就是求全部圓的半徑(小於等於1的不算)合大於等於這個斜邊長度的一半。

**:#include

#include

#include

using

namespace

std;

bool

cmp(

doublea,

doubleb)

intmain

()sort(a

,a+n

,cmp

);while(l

>0)

printf

("%d\n"

,ans);}

return0;

}

NYOJ 噴水裝置(一)

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0苗棟棟 簡單貪心 include include includeusing namespace ...

NYOJ 噴水裝置(二)

描述 有一塊草坪,橫向長w,縱向長為h,在它的橫向中心線上不同位置處裝有n n 10000 個點狀的噴水裝置,每個噴水裝置i噴水的效果是讓以它為中心半徑為ri的圓都被潤濕。請在給出的噴水裝置中選擇盡量少的噴水裝置,把整個草坪全部潤濕。輸入第一行輸入乙個正整數n表示共有n次測試資料。每一組測試資料的第...

NYOJ 噴水裝置(一)

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入 第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝...