NYOJ 1006噴水設定(一) 貪心

2021-07-04 13:43:49 字數 1050 閱讀 3673

時間限制:

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

樣例輸出

//nyoj-1006-噴水設定(貪心)

//題目大意:給你一定量的噴水設定,讓你求用最少的噴水設定將整個矩形草坪覆蓋;求所需噴水設定的數量;

//解題思路:本題運用貪心思想;通過區域性最優使得整體最優;首先明白,為了用最少的噴水設定來覆蓋整個草坪;

//肯定先用覆蓋範圍大的設定, 直到 草坪被覆蓋完;(這就需要對輸入的半徑進行降序排序,先用覆蓋半徑大的) ;

//其次,要知道每個半徑的覆蓋長度為 l = 2*sqrt(r*r-1) (草坪的寬是一,長是二十),每放乙個設定,就把這個的覆蓋長度加到 len上

//當 len > 20時全部覆蓋了(這個過程每累加一次記一次數,代表又有乙個設定放入草坪);

#include#include#include#includeusing namespace std;

double cmp(double x,double y)

int main()

}if(len>20)

break;

} printf("%d\n",sum);

}}

nyoj 6噴水設定(一) 貪心

典型的貪心,最優裝載問題。每個噴水口最大覆蓋長度為 2 sqrt a i a i 1把噴水口半徑從大到小排列,從最大的開始取就可以。注意 半徑1以及以下的噴水裝置不能覆蓋長度。但題目中說每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 的圓被濕潤,不考慮r 1的情況 2015 7 30 21 24...

NYOJ 噴水裝置(一) (貪心)

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

NYOJ 噴水裝置 二 貪心

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