bzoj3007: 拯救小云公主(二分+并查集)
挺水的题...好多题解说是对偶图,其实感觉不能算严格意义上的对偶图吧QAQ
先二分答案r,然后以boss为中心半径为r的圆不能走,求能否从左下走到右上。
不能从左下走到右上,说明这堆圆把图隔开了,于是把圆看成点,如果两个圆有重合部分就连边,左上两条边界看成S,右下两条边界看成T,如果连边后S和T连通说明无法从左下走到右上,没了...
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=, inf=1e9;
int n, N, M, S, T, tot, front, rear;
int x[maxn], y[maxn], h[maxn], d[maxn][maxn], fa[maxn];
bool v[maxn];
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-' && (f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
inline int sqr(int x) {return x*x;}
inline int dis(int a, int b) {return 1ll*sqr(abs(x[a]-x[b]))+sqr(abs(y[a]-y[b]));}
int gf(int x){return fa[x]==x?x:fa[x]=gf(fa[x]);}
inline bool check(double r)
{
for(int i=S;i<=T;i++) fa[i]=i;
for(int i=;i<=n;i++)
{
if(-(1e-)<1.0+r-x[i] || y[i]+r-M>-(1e-)) fa[gf(S)]=gf(i);
if(x[i]+r-N>-(1e-) || -(1e-)<1.0+r-y[i]) fa[gf(T)]=gf(i);
}
if(gf(S)==gf(T)) return ;
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
if(4ll*r*r>d[i][j])
{
fa[gf(i)]=gf(j);
if(gf(S)==gf(T)) return ;
}
return ;
}
int main()
{
read(n); read(N); read(M); S=; T=n+;
for(int i=;i<=n;i++) read(x[i]), read(y[i]);
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
d[i][j]=d[j][i]=dis(i, j);
double l=, r=min(N-, M-);
while(r-l>1e-)
{
double mid=(l+r)/;
if(check(mid)) l=mid;
else r=mid;
}
printf("%.2lf\n", l);
}
还有就是完全可以不用二分,直接按边长度从小到大加入,当加入到S和T连通的时候当前边的长度-eps就是答案了。。。但是大概得写prim才能到N^2,不然kruskal比上面做法可能快不了多少,我不会prim就不写了QAQ
加强版需要三角剖分...不会.jpg
bzoj3007: 拯救小云公主(二分+并查集)的更多相关文章
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...
- 【BZOJ3007】拯救小云公主 二分+几何+对偶图
[BZOJ3007]拯救小云公主 Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了 ...
- 【bzoj3007】拯救小云公主 二分+对偶图+并查集
题目描述 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等 ...
- bzoj3007: 拯救小云公主
Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是 ...
- 洛谷 P2498 [SDOI2012]拯救小云公主 解题报告
P2498 [SDOI2012]拯救小云公主 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到\(boss\)的洞穴门口,他一下子就懵了,因为面前不只是一 ...
- 【BZOJ】【3007】拯救小云公主
思路题 我的naive的做法是二分答案+判定是否有路径可走……但是没有正确理解[走的方向任意]这句话…… 其实就是说想咋走咋走= =360°无死角乱走…… 所以其实是个平面上的问题…… 我们可以换个方 ...
- BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主
4219: 跑得比谁都快 3007: 拯救小云公主 三角剖分的解释可以看这里:http://www.cnblogs.com/Enceladus/p/6706444.html 后一道是前一道的弱化版. ...
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意 ...
- 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】
题目 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1 ...
随机推荐
- mfs分布式系统从理论简介到实战部署
文章前面想说的话:这篇博客写出来真是有点累到了,本来昨天就基本就写好了,放在草稿里面,今天打开就没有了!!唉,就尼玛离我而去了,只有重写,然后中间虚拟机还“爆炸”重启又搞了一会,不容易呀!!希望各位博 ...
- APP端测试,常见功能测试点汇总
除去每个产品和版本不同的业务需求以及功能,针对于大多数的APP的共同点和移动设备的特性,本文总结了一些APP功能测试中经常遇见,需要考虑到的测试点以共参考 一.安装和卸载 应用的安装和卸载在任何一款A ...
- AWS探索及创建一个aws EC2实例
一.AWS登陆 1.百度搜索aws,或者浏览器输入:http://aws.amazon.com 2.输入账户及密码登陆(注册流程按照提示走即可) 二.创建EC2实例(相当于阿里云的ecs) 1.找到E ...
- (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来
原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...
- python购物车优化
一.需求分析 拥有用户接口和商家接口 用户能够进行消费记录查询,充值,购物等功能,消费记录存储于数据库 商家可以进行商品的增删改等操作 二.程序流程图 程序大致流程图如下: 三.代码实现 本程序分成两 ...
- 15 分钟用 ML 破解一个验证码系统
人人都恨验证码——那些恼人的图片,显示着你在登陆某网站前得输入的文本.设计验证码的目的是,通过验证你是真实的人来避免电脑自动填充表格.但是随着深度学习和计算机视觉的兴起,现在验证码常常易被攻破. 我拜 ...
- java-sun.misc.BASE64Decode AccessException
在使用sun.misc中base64类时,eclipse可能会报找不到Access异常 只需要修改一下访问方式即可,如下: 右键项目->属性->Javabulid path->jre ...
- Scrum立会报告+燃尽图(十月十日总第一次):选题
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 Scrum立会master:付佳 一.小组介绍 组长:付佳 组员: ...
- Scrum立会报告+燃尽图(Beta阶段第二次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2384 项目地址:https://coding.net/u/wuyy694 ...
- mysql 数据库名含“-”
跨数据库操作时,用反引号即可: insert into `tmi-ds`.knn_test(imagedata) select imagedata from tmidb.imagetable wher ...