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;
    }
  • 相关阅读:
    IDEA mybatis no data source 警告
    Flex 本地化(多语言) 语言文件夹设置
    Flex中 将字符串转化为Datetime类
    Disabling Clang Compiler warnings
    didEndEditingRowAtIndexPath with nil indexPath
    万达的商业模式有什么独到之处
    微信公众平台入门到精通合集
    BeautifulSoup解析非标准HTML的问题
    《人件》与软件研发项目管理
    足球3v3心得
  • 原文地址:https://www.cnblogs.com/tt-t/p/5022577.html
Copyright © 2011-2022 走看看