• nyoj 7 喷水装置一


     

    喷水装置(一)

    时间限制: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
    
    大水题,难度系数3,
    View Code
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include<math.h>
     4 #define eps 1e-7
     5 int cmp(const void*x,const void*y)
     6 {
     7       return *(double*)y-*(double *)x>eps?1:-1;//注意浮点数的大小比较
     8 }
     9 int main()
    10 {
    11     int m,n,i;
    12     double aa[610];
    13     double sum;
    14     scanf("%d",&m);
    15     while(m--)
    16     {
    17           sum=0;
    18           scanf("%d",&n);
    19           for(i=0;i<n;i++)
    20           {
    21                 scanf("%lf",&aa[i]);
    22           }
    23           qsort(aa,n,sizeof(aa[0]),cmp);
    24           //for(i=0;i<n;i++)
    25           //printf("%lf\n",aa[i]);
    26           for(i=0;i<n;i++)
    27           {
    28                 sum+=(2*sqrt(aa[i]*aa[i]-1));
    29                 if(sum-20>eps)
    30                 {
    31                       printf("%d\n",i+1);
    32                       break;
    33                 }
    34           }
    35     }
    36 }
    晕死。
     
  • 相关阅读:
    Sql中CHARINDEX用法
    Ubuntu 18.04 配置ibus中文拼音输入法(超简单)
    win10使用教程(电脑windows系统基础使用教程快速入门手册图文详解)
    angularjs中$scope是什么意思
    angularjs中$scope是什么意思?
    005列表标签
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
    Evanyou Blog 彩带
  • 原文地址:https://www.cnblogs.com/1114250779boke/p/2764946.html
Copyright © 2020-2023  润新知