zoukankan      html  css  js  c++  java
  • 12-喷水装置

    喷水装置(二)

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
     
    描述
    有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。
     
    输入
    第一行输入一个正整数N表示共有n次测试数据。
    每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水装置,w表示草坪的横向长度,h表示草坪的纵向长度。
    随后的n行,都有两个整数xi和ri,xi表示第i个喷水装置的的横坐标(最左边为0),ri表示该喷水装置能覆盖的圆的半径。
    输出
    每组测试数据输出一个正整数,表示共需要多少个喷水装置,每个输出单独占一行。
    如果不存在一种能够把整个草坪湿润的方案,请输出0。
    样例输入
    2
    2 8 6
    1 1
    4 5
    2 10 6
    4 5
    6 5
    样例输出
    1
    2
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #define max 10010
    struct node
    {
        double left,right;
    }a[max];
    bool cmp(node a,node b)
    {
        return a.left<b.left;
    }
    int main()
    {
        int N,n,w,h,x,r;
        scanf("%d",&N);
        while(N--)
        {
            int i=0,sum=0;
            scanf("%d%d%d",&n,&w,&h);
            while(n--)
            {
                scanf("%d%d",&x,&r);
                if(2*r<=h) continue;
                double len=sqrt(r*r-(h/2.0)*(h/2.0));
                a[i].left=x-len;
                a[i++].right=x+len;
            }
            std::sort(a,a+i,cmp);//每个圆所能覆盖的范围的排序 
            double flagl=0.0,flagr=0.0;
            for(int k=0;k!=i;k++)
            {
                if(a[k].left<=flagl)
                {
                    if(a[k].right>flagr)
                    {
                        flagr=a[k].right;
                    }
                }
                else 
                {
                    flagl=flagr;
                    sum++;
                    if(flagl>=w)break;
                    if(a[k].left>flagl + 1e-7 )break;
                    k--;
                }
            }
            if(flagr<w)sum=0;
            else if(flagl<flagr) sum++;
            printf("%d
    ",sum);
        }
        return 0;
    }
  • 相关阅读:
    数据仓库深入了解
    修改hive 默认fs为s3 遇到的坑
    Hadoop集群的各部分常用端口
    mvc结合web应用实例分析
    MVC简介
    关于jQuery获得表单radio类型输入框的选中值
    关于js中的取值问题
    struct2的xml文件中result的配置(转)
    关于http响应状态码
    关于hibernate插入数据到mysql数据库中文乱码问题的解决
  • 原文地址:https://www.cnblogs.com/tt-t/p/5022577.html
Copyright © 2011-2022 走看看