贪心算法之——喷水装置一(nyoj6)
生活随笔
收集整理的這篇文章主要介紹了
贪心算法之——喷水装置一(nyoj6)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述現有一塊草坪,長為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數Ri(0<Ri<15)的圓被濕潤,這有充足的噴水裝置i(1<i<600)個,并且一定能把草坪全部濕潤,你要做的是:選擇盡量少的噴水裝置,把整個草坪的全部濕潤。 輸入第一行m表示有m組測試數據
每一組測試數據的第一行有一個整數數n,n表示共有n個噴水裝置,隨后的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。 輸出輸出所用裝置的個數 樣例輸入 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位技術專家面對面20年技術見證,附贈技術全景圖
每一組測試數據的第一行有一個整數數n,n表示共有n個噴水裝置,隨后的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。
貪心法(把噴水裝置按半徑大小排下序,然后只要從半徑大的開始裝就對了。)
#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; }
?
總結
以上是生活随笔為你收集整理的贪心算法之——喷水装置一(nyoj6)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马化腾生日当天 微信支付居然崩溃了//(
- 下一篇: Mybatis-Plus 多表联查分页