题解:

是一个不错的题目

首先我们可以考虑二分答案

然后变成判定性问题

对于每个画一个圆 当其会被阻断时就是答案

阻断有四种情况 左下 上下 左右 右上

但是这样是n^2a(n)*logn的

考虑直接spfa 那是kn^2的

但是洛谷的空间是128的。。有点小

代码:

// luogu-judger-enable-o2
#include <bits/stdc++.h>
using namespace std;
#define N 10000000
#define INF 1e9
double x[],y[],dis[];
int head[];
int n,a,b,l;
bool inq[];
struct re{
int a,b;
double c;
}e[N];
void arr(int x,int y,double z)
{
e[++l].a=head[x];
e[l].b=y;
e[l].c=z;
head[x]=l;
}
queue<int>q;
int cnt=,cnt2;
void spfa()
{
while (!q.empty())
{
cnt++;
int xx=q.front(); q.pop();
int u=head[xx];
while (u)
{
cnt2++;
int v=e[u].b;
if (max(dis[xx],e[u].c)<dis[v])
{
dis[v]=max(dis[xx],e[u].c);
if (!inq[v])
{
inq[v]=; q.push(v);
}
}
u=e[u].a;
}
inq[xx]=;
}
}
int main()
{
//std::ios::sync_with_stdio(false);
cin>>n>>a>>b;
for (int i=;i<=n;i++) cin>>x[i]>>y[i];
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
double s=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
s/=;
arr(i,j,s);
}
int s1=n+,s2=n+,s3=n+,s4=n+;
for (int i=;i<=n;i++)
{
arr(s1,i,x[i]-); arr(i,s1,x[i]-);
arr(s2,i,b-y[i]); arr(i,s2,b-y[i]);
arr(s3,i,y[i]-); arr(i,s3,y[i]-);
arr(s4,i,a-x[i]); arr(i,s4,a-x[i]);
}
double ans=INF;
for (int i=;i<=s4;i++) dis[i]=INF;
dis[s1]=; dis[s2]=;q.push(s1); q.push(s2);
spfa();
ans=min(ans,dis[s3]); ans=min(ans,dis[s4]);
ans=min(ans,dis[s4]); ans=min(ans,dis[s3]);
printf("%.2f",ans);
return ;
}

[SDOI2012]拯救小云公主的更多相关文章

  1. 洛谷 P2498 [SDOI2012]拯救小云公主 解题报告

    P2498 [SDOI2012]拯救小云公主 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到\(boss\)的洞穴门口,他一下子就懵了,因为面前不只是一 ...

  2. 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主

    Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意 ...

  3. P2498 [SDOI2012]拯救小云公主

    \(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...

  4. 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】

    题目 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1 ...

  5. BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集

    Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...

  6. 【BZOJ】【3007】拯救小云公主

    思路题 我的naive的做法是二分答案+判定是否有路径可走……但是没有正确理解[走的方向任意]这句话…… 其实就是说想咋走咋走= =360°无死角乱走…… 所以其实是个平面上的问题…… 我们可以换个方 ...

  7. BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主

    4219: 跑得比谁都快 3007: 拯救小云公主 三角剖分的解释可以看这里:http://www.cnblogs.com/Enceladus/p/6706444.html 后一道是前一道的弱化版. ...

  8. 【BZOJ3007】拯救小云公主 二分+几何+对偶图

    [BZOJ3007]拯救小云公主 Description     英雄又即将踏上拯救公主的道路……     这次的拯救目标是——爱和正义的小云公主.     英雄来到boss的洞穴门口,他一下子就懵了 ...

  9. bzoj3007: 拯救小云公主

    Description     英雄又即将踏上拯救公主的道路……     这次的拯救目标是——爱和正义的小云公主.     英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是 ...

随机推荐

  1. ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展

    ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类 ...

  2. PHP第三方登录—OAuth2.0协议

    第2章 OAuth授权流程详解 

  3. DotNetBar 控件设置空内容时显示内容

    可以通过修改所有关于Watermark时的设置.

  4. fcn16s

  5. 拆分窗口QSplitter

    拆分窗口中可以添加许多子控件,各个子控件通过拆分线相互分隔开来,拖动该拆分线可以随意改变子控件大小 import sys from PyQt5.QtCore import Qt from PyQt5. ...

  6. JavaScript之子类构建工具

    (function(){ var initializing = false; var superPattern = /xyz/.test(function(){ xyz; }) ? /\b_super ...

  7. JavaScript之BOM五大对象(window;location;navigator;screen;history)

    一.window 1.浏览器窗口与页面各部分尺寸 2.间歇调用与超时调用 setInterval(function,time(以毫秒计)) 返回:时间Id号(为clearInterval(timeId ...

  8. Java添加过期注解

    加上 @Deprecated 后方法名称显示: 中划线(删除线)意为:发生这些变化并不会影响编译,只是提醒一下程序员,这个方法以后是要被删除的,最好别用.就是如果一个类从另外一个类继承,并且overr ...

  9. Python sys.path详细介绍

    如何将路径“永久"添加到sys.path? sys.path是python的搜索模块的路径集,是一个list 复制代码 代码如下: ['', 'C:\\WINDOWS\\system32\\ ...

  10. 2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析 实验步骤: 使用的设备:Win7(虚拟机).kali(虚拟机) 实验一:使用如计划任务,每隔一分钟记录自己的电脑有哪些程 ...