挺水的题...好多题解说是对偶图,其实感觉不能算严格意义上的对偶图吧QAQ

  先二分答案r,然后以boss为中心半径为r的圆不能走,求能否从左下走到右上。

  不能从左下走到右上,说明这堆圆把图隔开了,于是把圆看成点,如果两个圆有重合部分就连边,左上两条边界看成S,右下两条边界看成T,如果连边后S和T连通说明无法从左下走到右上,没了...

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=3010, 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=1; k=0; char c=getchar();while(c<'0' || c>'9') c=='-' && (f=-1), c=getchar();while(c<='9' && c>='0') k=k*10+c-'0', 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=1;i<=n;i++) {if(-(1e-6)<1.0+r-x[i] || y[i]+r-M>-(1e-6)) fa[gf(S)]=gf(i);if(x[i]+r-N>-(1e-6) || -(1e-6)<1.0+r-y[i]) fa[gf(T)]=gf(i);}if(gf(S)==gf(T)) return 0;for(int i=1;i<=n;i++)for(int j=1;j<i;j++)if(4ll*r*r>d[i][j]) {fa[gf(i)]=gf(j);if(gf(S)==gf(T)) return 0;}return 1;
}
int main()
{read(n); read(N); read(M); S=0; T=n+1;for(int i=1;i<=n;i++) read(x[i]), read(y[i]);for(int i=1;i<=n;i++)for(int j=1;j<i;j++)d[i][j]=d[j][i]=dis(i, j);double l=0, r=min(N-1, M-1);while(r-l>1e-4){double mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%.2lf\n", l);
}

View Code

  还有就是完全可以不用二分,直接按边长度从小到大加入,当加入到S和T连通的时候当前边的长度-eps就是答案了。。。但是大概得写prim才能到N^2,不然kruskal比上面做法可能快不了多少,我不会prim就不写了QAQ

  加强版需要三角剖分...不会.jpg

转载于:https://www.cnblogs.com/Sakits/p/7986697.html

bzoj3007: 拯救小云公主(二分+并查集)相关推荐

  1. bzoj3007 拯救小云公主

    3007: 拯救小云公主 Time Limit: 5 Sec   Memory Limit: 512 MB Submit: 159   Solved: 71 [ Submit][ Status][ D ...

  2. [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs

    前言 以为二分的是人到BOOS的距离 没想到可以直接二分BOOS的攻击距离 传送门 : 思路 BFS待研究 CODE typedef pair<int,int> pii; map<i ...

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

    P2498 [SDOI2012]拯救小云公主 题意: 一个row * line的矩形,英雄在左下角(1,1),公主在右上角(row,line),有n个位置是boss.英雄现在要去公主那里,但是要避开b ...

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

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

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

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

  6. bzoj 3007 拯救小云公主

    http://www.elijahqi.win/archives/3705 Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门 ...

  7. [SDOI2012]拯救小云公主

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

  8. BZOJ 3007: 拯救小云公主

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

  9. bzoj3007 解救小云公主

    3007: 解救小云公主 Time Limit: 5 Sec  Memory Limit: 512 MB Submit: 159  Solved: 71 [Submit][Status][Discus ...

最新文章

  1. 怎么添加设置微信定位服务器,微信的定位怎么添加
  2. http://www.raytracegroundup.com/downloads.html 对该页的翻译。
  3. net::ERR_ABORTED ,引入js文件出现报错的解决方法
  4. Devoxx Hackergarten的企业Web应用程序原型
  5. X264学习笔记(1)
  6. 解决Matlab画图直接保存.eps格式而导致图不全的问题
  7. 剑指offer58 二叉树的下一个结点
  8. PHP语言的RSA算法加解密程序
  9. 关于Meminfo中MemAvailable 理解
  10. wunderlist_Wunderlist的6种开源替代品
  11. html中img图片绝对路径时无法正常显示的问题
  12. Word文件打开的时候需要输入密码?
  13. idea创建SpringBoot工程
  14. python中num函数是什么意思_如何理解python3函数中num的用法?
  15. 辅导作业很“崩溃”?猿辅导教你三招告别怒吼式教育
  16. 吕文翰 php,自己动手写一个 iOS 网络请求库(三)——降低耦合
  17. 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现
  18. Pandas学习笔记(一)
  19. 计算机显示字体怎么设置,电脑字体太小怎么调,教您怎样更改电脑界面的字体大小...
  20. 基于 Matlab/simulink的锂电池建模与仿真——复现论文《基于二阶EKF的锂离子电池SOC估计的建模与仿真》的仿真部分

热门文章

  1. 【赵强老师】Redis的事务和示例
  2. qcustomplot彩虹色 Rainbow
  3. 将VMProtect集成到应用程序教程之实模式(四):将代码锁定到序列号上
  4. 反对·支持·语言之争
  5. 用Python分析北京市蛋壳公寓租房数据
  6. Ogre材质脚本关健字说明
  7. ntoskrnl.exe导致Win10蓝屏的解决方案(转载)
  8. python语句first、*middles_下列控制措施中,贯彻了制衡性原则的有( )
  9. javascript 阻止事件冒泡 cancelBubble
  10. JSF标签之数据表h:dataTable