C 噴水裝置 貪心

2021-10-10 21:32:05 字數 876 閱讀 3367

題目 (vector+pair寫法)

結構體陣列

#include#include#include#include#include#include#includeusing namespace std;/*3

8 20 2

5 34 1

1 27 2

10 2

13 3

16 2

19 4

3 10 1

3 59 3

6 13 10 1

5 31 1

9 1*/

struct data

sh[99999];

bool cmp(data d1, data d2)//比較器

int main()

n = i; //去掉半徑小於w/2後的剩餘裝置

sort(sh, sh + n, cmp); //左端點遞增排序

double long=0;//右端已經噴水的距離

int flag = 1;

i = 0;

int c = 0;

while (i < n)

if (long >= l) //已經完全覆蓋,停止計數

double max = -1;

while (i < n && sh[i].a <= long) //在左端點不超過當前已覆蓋的範圍,選取右端點最大的

long = max;

c++;

} if (flag == 0 && long < l)

cout << "-1" << endl;

else

cout << c << endl;

} return 0;

}

噴水裝置(一)(貪心)

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

噴水裝置(一) 貪心

描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入 第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝置,隨後的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑...

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

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