NYOJ 6 噴水裝置(一)

2021-06-23 09:19:02 字數 1059 閱讀 4887

時間限制:

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

5

題目大意: 在長為20公尺,寬為2公尺的草坪中心線上(注意是中心線)放置半徑為ri的噴水裝置。

求滿足草坪全部濕潤的情況下(覆蓋的長度》=20),最少使用多少噴水裝置。

剛接觸時自己沒看懂題意不知道怎麼做,現在發現其實就是乙個很簡單的貪心問題,貪心問題一般先排序。

每個噴水裝置覆蓋的範圍如圖:

情況一:半徑<=1的噴水裝置覆蓋的長度為0,半徑<=1的噴水裝置應該摒棄。

情況二:噴水裝置的覆蓋範圍為 = 2*x = 2*sqrt(r*r-1); 

ac**如下:

#include#include#include#includeusing namespace std;

int cmp(double a,double b)

double f(double r) //求出每個噴水裝置覆蓋的長度

int main()

sort(a,a+k,cmp); //快排,將噴水裝置的覆蓋長度,由大到小排序

for(i=0,sum=0.0; i=20.0)

}printf("%d\n",i+1);

} return 0;

}

NYOJ 6 噴水裝置(一)

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

NYOJ 6 噴水裝置(一)

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

nyoj6 噴水裝置(一)

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