[SDOI2012]拯救小云公主
题解:
是一个不错的题目
首先我们可以考虑二分答案
然后变成判定性问题
对于每个画一个圆 当其会被阻断时就是答案
阻断有四种情况 左下 上下 左右 右上
但是这样是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]拯救小云公主的更多相关文章
- 洛谷 P2498 [SDOI2012]拯救小云公主 解题报告
P2498 [SDOI2012]拯救小云公主 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到\(boss\)的洞穴门口,他一下子就懵了,因为面前不只是一 ...
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意 ...
- P2498 [SDOI2012]拯救小云公主
\(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...
- 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】
题目 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1 ...
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...
- 【BZOJ】【3007】拯救小云公主
思路题 我的naive的做法是二分答案+判定是否有路径可走……但是没有正确理解[走的方向任意]这句话…… 其实就是说想咋走咋走= =360°无死角乱走…… 所以其实是个平面上的问题…… 我们可以换个方 ...
- BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主
4219: 跑得比谁都快 3007: 拯救小云公主 三角剖分的解释可以看这里:http://www.cnblogs.com/Enceladus/p/6706444.html 后一道是前一道的弱化版. ...
- 【BZOJ3007】拯救小云公主 二分+几何+对偶图
[BZOJ3007]拯救小云公主 Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了 ...
- bzoj3007: 拯救小云公主
Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是 ...
随机推荐
- hive vs hbase
HIVE和HBASE区别 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这 ...
- linux4.10.8 内核移植(一)---环境搭建及适配单板。
一.环境搭建 源码包下载:git clone https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.10.8.tar.gz 或者直接去kernel. ...
- 关于JS事件冒泡与JS事件代理(事件委托)
连接:https://blog.csdn.net/supercoooooder/article/details/52190100 核心代码: <ul id="parentUl" ...
- SpringBoot扩展SpringMVC自动配置
SpringBoot中自动配置了 ViewResolver(视图解析器) ContentNegotiatingViewResolver(组合所有的视图解析器) 自动配置了静态资源文件夹.静态首页.fa ...
- 如何用ModelsimSE仿真IP核-以PLL为例
我们之前介绍了如何使用Modelsim SE进行仿真和利用do文件的仿真方法,但是其中待仿真的模块是我们自己编写的Verilog模块,但是在实际工作中,我们的设计中会经常用到FPGA厂商给我们提供的现 ...
- Python模块学习 - fnmatch & glob
介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特定的文件就能满足需求,如果需要更加灵活的字符串匹配,就没有办法了,这里 ...
- android摄像头(camera)之 v4l2的c测试代码【转】
转自:https://blog.csdn.net/ldswfun/article/details/8745577 在移植android hal的过程中,移植的首要任务是要确保驱动完好,camera是属 ...
- c或c++的网络库
Asio C++ Library: Asio is a cross-platform C++ library for network and low-level I/O programming tha ...
- chattr的使用
让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作: chattr +a /home/caolei/.bash_history 查看lsattr /home/caolei/.bash_ ...
- hostapd 和 wap_supplicant
hostapd : user space daemon for access points, including, e.g., IEEE 802.1X/WPA/EAP Authenticator fo ...