贪心算法之——喷水装置一(nyoj6)
生活随笔
收集整理的這篇文章主要介紹了
贪心算法之——喷水装置一(nyoj6)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
描述現(xiàn)有一塊草坪,長(zhǎng)為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個(gè)噴水裝置的效果都會(huì)讓以它為中心的半徑為實(shí)數(shù)Ri(0<Ri<15)的圓被濕潤(rùn),這有充足的噴水裝置i(1<i<600)個(gè),并且一定能把草坪全部濕潤(rùn),你要做的是:選擇盡量少的噴水裝置,把整個(gè)草坪的全部濕潤(rùn)。 輸入第一行m表示有m組測(cè)試數(shù)據(jù)
每一組測(cè)試數(shù)據(jù)的第一行有一個(gè)整數(shù)數(shù)n,n表示共有n個(gè)噴水裝置,隨后的一行,有n個(gè)實(shí)數(shù)ri,ri表示該噴水裝置能覆蓋的圓的半徑。 輸出輸出所用裝置的個(gè)數(shù) 樣例輸入 2
5
2 3.2 4 4.5 6
10
1 2 3 1 2 1.2 3 1.1 1 2 樣例輸出 2
5
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
每一組測(cè)試數(shù)據(jù)的第一行有一個(gè)整數(shù)數(shù)n,n表示共有n個(gè)噴水裝置,隨后的一行,有n個(gè)實(shí)數(shù)ri,ri表示該噴水裝置能覆蓋的圓的半徑。
貪心法(把噴水裝置按半徑大小排下序,然后只要從半徑大的開(kāi)始裝就對(duì)了。)
#include <cstdio> #include <algorithm> #include <cmath> using namespace std;int main() {int t;double a[600];scanf("%d", &t);while(t--){int n;double l = 20.0;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%lf", &a[i]);}sort(a, a+n);int i;for(i= n-1; l>0&&i>=0; i--){l -= 2*sqrt(a[i]*a[i] - 1);}printf("%d\n", n-i-1);}return 0; }
?
總結(jié)
以上是生活随笔為你收集整理的贪心算法之——喷水装置一(nyoj6)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 马化腾生日当天 微信支付居然崩溃了//(
- 下一篇: Mybatis-Plus 多表联查分页