zoukankan      html  css  js  c++  java
  • UVA

    UVA - 11853

    思路:dfs,从最上面超过上边界的圆开始搜索,看能不能搜到最下面超过下边界的圆。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e3+5;
    double l,r;
    int n;
    bool vis[N]={false};
    bool flag=false;
    struct point 
    {
        int x,y,r;
    }a[N];
    bool intersect(point a,point b)
    {
        return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)<=(a.r+b.r)*(a.r+b.r); 
    }
    void dfs(point u)
    {
        if(u.x<u.r||u.x+u.r>1000)
        {
            l=min(l,u.y-sqrt(u.r*u.r-u.x*u.x));
            r=min(r,u.y-sqrt(u.r*u.r-(1000-u.x)*(1000-u.x)));
        }
        if(u.y<u.r)
        {
            flag=true;
            return ;
        }
        for(int i=0;i<n;i++)
        {
            if(!vis[i]&&intersect(u,a[i]))
            {
                vis[i]=true;
                dfs(a[i]);
            }
        }
    }
    int main()
    {
        while(~scanf("%d",&n))
        {
            memset(vis,false,sizeof(vis));
            flag=false;
            l=1000,r=1000;
            for(int i=0;i<n;i++)
            {
                scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].r);
            }
            for(int i=0;i<n;i++)
            {
                if(!vis[i]&&a[i].y+a[i].r>1000)
                {
                    vis[i]=true;    
                    dfs(a[i]);
                }
            }
            if(flag)printf("IMPOSSIBLE
    ");
            else printf("0.00 %.2lf 1000.00 %.2lf
    ",l,r);
        }
        return 0;
    }
  • 相关阅读:
    linux开发基本库
    Configure,Makefile.am, Makefile.in, Makefile文件
    sql的其他语句
    sql 链接 查询
    sql的 select
    SQL语句:
    angular 指令系统(二)自定义指令:
    angularJS 指令系统
    angular JS 过滤器
    angularJS 控制器
  • 原文地址:https://www.cnblogs.com/widsom/p/7280111.html
Copyright © 2011-2022 走看看