zoukankan      html  css  js  c++  java
  • 喷水装置(一)--nyoj题目6

    喷水装置(一)

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描述现有一块草坪,长为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





    开始的时候把提议理解错了,还以为给出半径的圆都是无限呢!无语
    这个题想法就是 :贪心算法,每次都要选择半径最大的,自然用的就最少了!



     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 using namespace std;
     6 
     7 double r[601];
     8 bool cmp(double a,double b)
     9 {
    10     return a>b;
    11 }
    12 
    13 int main()
    14 {
    15     int N,n,i;
    16     double sum;
    17     scanf("%d",&N);
    18     while(N--)
    19     {
    20         scanf("%d",&n);
    21         for(i=0;i<n;i++)
    22             scanf("%lf",&r[i]);
    23             sort(r,r+n,cmp);
    24             double l=20;
    25             int cot=0;
    26             while(l>0)
    27             {
    28                 l-=2*sqrt(r[cot]*r[cot]-1);
    29                 cot++;
    30             }
    31             printf("%d
    ",cot);
    32     }
    33 }
  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/Eric-keke/p/4695461.html
Copyright © 2011-2022 走看看