bzoj3007: 拯救小云公主
Description
Input
Output
#include<cstdio>
#include<cmath>
#include<algorithm>
int n;
double xm,ym;
struct pos{double x,y;}ps[];
int q[],ed[];
bool discmp(double x,double y,double z){
return x*x+y*y<z*z;
}
bool chk(double R){
int ql=,qr=;
for(int i=;i<n;i++){
if(ps[i].x-<R||ps[i].y+R>ym){
q[qr++]=i;
ed[i]=;
if(ps[i].x+R>xm||ps[i].y-R<)return ;
}else ed[i]=;
}
while(ql!=qr){
int w=q[ql++];
for(int i=;i<n;i++)if(!ed[i]&&discmp(ps[i].x-ps[w].x,ps[i].y-ps[w].y,R*)){
q[qr++]=i;
ed[i]=;
if(ps[i].x+R>xm||ps[i].y-R<)return ;
}
}
return ;
}
int main(){
scanf("%d%lf%lf",&n,&xm,&ym);
for(int i=;i<n;i++){
scanf("%lf%lf",&ps[i].x,&ps[i].y);
}
double L=,R=xm+ym+;
while(R-L>1e-){
double M=(L+R)/.;
if(chk(M))R=M;
else L=M;
}
printf("%.2lf\n",(L+R)/.);
return ;
}
#include<cstdio>
#include<cmath>
#include<algorithm>
int n,xm,ym,ep=;
int f[];
struct pos{int x,y;}ps[];
struct edge{int a,b;long long c;}e[];
bool operator<(edge a,edge b){
return a.c<b.c;
}
inline long long min2(long long a,long long b){
a*=a;b*=b;
return a<b?a:b;
}
int get(int x){
int a=x,c;
while(x!=f[x])x=f[x];
while(x!=(c=f[a]))f[a]=x,a=c;
return x;
}
int main(){
scanf("%d%d%d",&n,&xm,&ym);
for(int i=;i<n;i++){
f[i]=i;
scanf("%d%d",&ps[i].x,&ps[i].y);
e[ep++]=(edge){i,n,*min2(xm-ps[i].x,ps[i].y-)};
e[ep++]=(edge){i,n+,*min2(ps[i].x-,ym-ps[i].y)};
for(int j=;j<i;j++){
long long x=ps[i].x-ps[j].x,y=ps[i].y-ps[j].y;
e[ep++]=(edge){i,j,x*x+y*y};
}
}
f[n]=n;f[n+]=n+;
std::sort(e,e+ep);
for(int i=;i<ep;i++){ int a=get(e[i].a),b=get(e[i].b);
if(a!=b){
f[a]=b;
if(get(n)==get(n+)){
printf("%.2f\n",sqrt(e[i].c)/.+1e-);
return ;
}
}
}
return ;
}
bzoj3007: 拯救小云公主的更多相关文章
- bzoj3007: 拯救小云公主(二分+并查集)
挺水的题...好多题解说是对偶图,其实感觉不能算严格意义上的对偶图吧QAQ 先二分答案r,然后以boss为中心半径为r的圆不能走,求能否从左下走到右上. 不能从左下走到右上,说明这堆圆把图隔开了,于是 ...
- 【BZOJ3007】拯救小云公主 二分+几何+对偶图
[BZOJ3007]拯救小云公主 Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了 ...
- 【BZOJ】【3007】拯救小云公主
思路题 我的naive的做法是二分答案+判定是否有路径可走……但是没有正确理解[走的方向任意]这句话…… 其实就是说想咋走咋走= =360°无死角乱走…… 所以其实是个平面上的问题…… 我们可以换个方 ...
- BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主
4219: 跑得比谁都快 3007: 拯救小云公主 三角剖分的解释可以看这里:http://www.cnblogs.com/Enceladus/p/6706444.html 后一道是前一道的弱化版. ...
- 洛谷 P2498 [SDOI2012]拯救小云公主 解题报告
P2498 [SDOI2012]拯救小云公主 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到\(boss\)的洞穴门口,他一下子就懵了,因为面前不只是一 ...
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意 ...
- 【bzoj3007】拯救小云公主 二分+对偶图+并查集
题目描述 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等 ...
- P2498 [SDOI2012]拯救小云公主
\(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...
- 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】
题目 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1 ...
随机推荐
- LINQ 按多个字段排序
多字段排序 添加到 LINQ 查询结果中的Take()扩展方法用于提取前 个结果: private static void Ordering() { var racers = (from r in F ...
- ZOJ 1107 FatMouse and Cheese
原题链接 题目大意:FM在一个街道n*n街道的(0,0)点,在每个网格里放着cheese,他要尽可能多的吃这些cheese.有两个规则:1)他跑的总距离不能超过k步:2)下一个节点的cheese的块数 ...
- css link和@import区别
1.link语法结构 <link href="CSSurl路径" rel="stylesheet" type="text/css" / ...
- tools/version.c
/* * linux/version.c * * Copyright (C) 1992 Theodore Ts'o * * May be freely distributed as part ...
- ArrayList笔记
elementData是一个缓存数组,它通常会预留一些容量,等容量不足时再扩充容量,这个楼主一定是明白的,不用多解释.假如现在实际有了5个元素,而elementData的大小可能是10,那么在序列化时 ...
- js部分---类型,变量;
<script type="text/javascript">1.注释:用“//或者/**/”2.数据类型: (1)整型 int (2)小数类型 单精度float 双精 ...
- Docker安装及基本使用方法
Docker安装 CentOS6上安装Docker # yum -y install epel-release # yum -y install docker-io CentOS7上安装Docker ...
- Codeforces Round #143 (Div. 2)
A. Team 模拟. B. Magic, Wizardry and Wonders 可以发现\[d=a_1-a_2+a_3-a_4+\cdots\] 那么有\(odd=\lfloor \frac{n ...
- android中的Handler
android的Handler 前言 学习android一段时间了,为了进一步了解android的应用是如何设计开发的,决定详细研究几个开源的android应用.从一些开源应用中吸收点东西,一边进 ...
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...