UVA - 11853 Paintball(dfs)

时间:2022-03-02 00:39:35

UVA - 11853

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

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+;
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>)
{
l=min(l,u.y-sqrt(u.r*u.r-u.x*u.x));
r=min(r,u.y-sqrt(u.r*u.r-(-u.x)*(-u.x)));
}
if(u.y<u.r)
{
flag=true;
return ;
}
for(int i=;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=,r=;
for(int i=;i<n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].r);
}
for(int i=;i<n;i++)
{
if(!vis[i]&&a[i].y+a[i].r>)
{
vis[i]=true;
dfs(a[i]);
}
}
if(flag)printf("IMPOSSIBLE\n");
else printf("0.00 %.2lf 1000.00 %.2lf\n",l,r);
}
return ;
}

UVA - 11853 Paintball(dfs)的更多相关文章

  1. UVA 11853 Paintball ——(dfs&plus;圆交判定)

    题意:给出一个1000*1000大小的矩阵,里面有若干圆,表示障碍物,现在要找出从左边到右边的一条通路,输出入口和出口的坐标,如果有多答案,输出y值最大的答案. 分析:从与上面相连的圆开始dfs,每次 ...

  2. UVA 11853 Paintball(几何数学&plus;DFS)

    https://vjudge.net/problem/UVA-11853 根据题意描述,相当于在一个正方形中有若干个圆形障碍物,问是否能从左边界走到右边界.判断是否有解需要一点创造性的思维:不妨把正方 ...

  3. UVA 1267 Network(DFS)

    题目链接:https://vjudge.net/problem/UVA-1267 首先我们要把这样一棵无根树转换成有根树,那么树根我们可以直接使用$VOD$. 还有一个性质:如果深度为$d$的一个节点 ...

  4. UVA - 1103Ancient Messages(dfs)

    UVA - 1103Ancient Messages In order to understand early civilizations, archaeologists often study te ...

  5. UVA 11853 - Paintball 战场&lpar;dfs&rpar;

    题意:有n个敌人,每个敌人有一个攻击范围,问你是否存在从西边到东边的路径,如果存在,输出入点和出点最靠北的坐标. 把每个敌人看出一个圆,从上往下跑dfs连通,如果到达底部,那么无解.要求出最靠北的坐标 ...

  6. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

  7. LeetCode Subsets (DFS)

    题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...

  8. uva 725 Division(除法)暴力法!

    uva 725  Division(除法) A - 暴力求解 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  9. HDU 2553 N皇后问题(dfs)

    N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在 ...

随机推荐

  1. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

  2. &lt&semi;&lt&semi;Design Patterns&gt&semi;&gt&semi; Gang of Four

    One:Introduction: One-1:Before  delving into the  some twenty pattern designs, it's necessary for ME ...

  3. &lbrack;&period;net 面向对象程序设计进阶&rsqb; &lpar;4&rpar; 正则表达式 &lpar;三&rpar; 表达式助手

    [.net 面向对象程序设计进阶] (2) 正则表达式(三) 表达式助手 上面两节对正则表达式的使用及.NET下使用正则表达式作了详细说明,本节主要搜集整理了常用的正则表达式提供参考. 此外为了使用方 ...

  4. &lbrack;转&rsqb;relative、absolute和float

    position:relative和position:absolute都可以改变元素在文档中的位置,都能激活元素的left.top.right.bottom和z-index属性.(默认这些属性未激活, ...

  5. linux如何查进程、杀进程

    本文系转载,转载原文地址:http://blog.sina.com.cn/s/blog_637112040100vl53.html 1.查进程   ps命令查找与进程相关的PID号:   ps a 显 ...

  6. vue引入echarts、找不到的图表引入方法、图表中的点击事件

    1.在vue-cli项目中添加webpack配置,本文引入的最新版本.在 3.1.1 版本之前 ECharts 在 npm 上的 package 是非官方维护的,从 3.1.1 开始由官方 EFE 维 ...

  7. TLS握手、中断恢复与证书中心的原因

    在双方都拿到随机数A.B.C后,将会使用这三个随机数生成一个对话密钥,然后使用该对话密钥进行对称加密通信,这种方式我们可以看到,安全性取决于随机数C的加密,前面的几个都是明文传的,这里就取决于服务器的 ...

  8. idea 快键键

    debug快键键 F9 resume programe 恢复程序 Alt+F10 show execution point 显示执行断点 F8 Step Over 相当于eclipse的f6 跳到下一 ...

  9. Emacs显示光标在哪个函数

    Emacs24中打开which-function-mode即可. 在.emacs中添加一行: (which-function-mode 1) 调整which-function在mode-line中的显 ...

  10. Silverlight 控件

    http://www.cnblogs.com/yangfan/archive/2010/03/11/1683580.html