题目链接


正难则反。

要直接求从起点到终点的最大距离,不妨反过来求最小的可以阻止骑士从起点到终点的对于全体圆的最小半径。

那么,就是阻止从左上角到右下角的所有相交圆,于是,就是要变成没有从左上角到右下角的相交圆才可以,那么不妨跑一个bfs来判断,我们二分答案半径,然后看,是否左边界和上边界的相交圆可以抵达下边界和右边界。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
//#include <unordered_map>
//#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define eps 1e-4
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define MP(a, b) make_pair(a, b)
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxN = 3e3 + 7;
int N;
double row, line, ans;
struct node
{double x, y;node(double a=0, double b=0):x(a), y(b) {}inline void In() { scanf("%lf%lf", &x, &y); }
} a[maxN];
bool vis[maxN];
queue<int> Q;
inline double _Dis(node e1, node e2) { return sqrt((e1.x - e2.x) * (e1.x - e2.x) + (e1.y - e2.y) * (e1.y - e2.y)); }
inline bool bfs(double r)
{while(!Q.empty()) Q.pop();for(int i=1; i<=N; i++) vis[i] = false;for(int i=1; i<=N; i++){if(_Dis(a[i], node(1, 1)) < r || _Dis(a[i], node(row, line)) < r) return false;if(a[i].x < 1. + r || a[i].y + r > line){vis[i] = true;Q.push(i);}}int u;while(!Q.empty()){u = Q.front(); Q.pop();if(a[u].x + r > row || a[u].y < 1. + r) return false;for(int i=1; i<=N; i++){if(vis[i]) continue;if(_Dis(a[i], a[u]) < 2. * r){vis[i] = true;Q.push(i);}}}return true;
}
int main()
{scanf("%d%lf%lf", &N, &row, &line);for(int i=1; i<=N; i++) a[i].In();double L = 0., R = min(row, line), mid = 0.; ans = 0.;while(R - L >= eps){mid = (L + R) / 2.;if(bfs(mid)){L = mid;ans = mid;}else R = mid;}printf("%.2lf\n", ans);return 0;
}

[SDOI2012]拯救小云公主【bfs+二分答案】相关推荐

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

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

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

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

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

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

  4. [SDOI2012]拯救小云公主

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

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

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

  6. bzoj3007: 拯救小云公主(二分+并查集)

    挺水的题...好多题解说是对偶图,其实感觉不能算严格意义上的对偶图吧QAQ 先二分答案r,然后以boss为中心半径为r的圆不能走,求能否从左下走到右上. 不能从左下走到右上,说明这堆圆把图隔开了,于是 ...

  7. bzoj3007 拯救小云公主

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

  8. bzoj 3007 拯救小云公主

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

  9. BZOJ 3007: 拯救小云公主

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

最新文章

  1. Delphi XE5 for Android (十)
  2. shell命令之---LVM文件系统
  3. vsFTPD编译安装使用实用手册
  4. mysql 事物 锁行 测试_MySQL Transaction--RR事务隔离级别下加锁测试
  5. JAVA中.jsp模板文件AJAX异步请求 - 数据渲染问题
  6. linux adc是什么设备,Linux 驱动--ADC驱动
  7. Win10 IoT Core 更改密码(PowerShell)
  8. 箭头函数写法_箭头函数
  9. 我的2020年终回顾:人生,海海,破浪前行
  10. 心智成熟的道路虽然辛苦,却是实打实的进步,因为你的每一次迈进,朝向的都是自我实现,也是人之所以为人的价值所在
  11. 【转】实用API大全
  12. 由光声前向模型求取光声信号
  13. QScrollBar垂直滚动条简单样式定制
  14. ERROR 1146 (42S02): Table '库名.表名' doesn't exist
  15. 最新emoji表情代码大全_周六最美早晨好问候语图片大全 早晨好图片祝福 最新早上好问候动态表情图片...
  16. 【纪中受难记】——Day20:祈祷落幕时
  17. 一季度,亏损超7亿!阿里的“亲儿子”百世物流怎么了?
  18. 如何定时刷新一个View的内容呢? 酷课堂iOS交流群问答(201901期)
  19. matlab怎么方差函数,密度函数已知,怎么用matlab求其数学期望和方差?
  20. windows 10必装的五款神器

热门文章

  1. 上市P2P转型电商:和信贷推会员制购物平台,前车之鉴今犹在
  2. 以智慧校园为起点 西电携手新华三发掘信息化价值
  3. 开发者必看 | DevWeekly 第1期:什么是时间复杂度?
  4. 需求分析挑战之旅(疯狂的订餐系统)(7)——变被动为主动
  5. Oracle的Connect By用法及理解
  6. 2022 前端常用的开发工具、组件库等等~持续整理,待你分享~
  7. Excel行高与像素值,列宽与像素值之间的转换,绘制Excel像素画。
  8. 屡陷丑闻的 Facebook,试图靠 AI Bot 管住员工的嘴
  9. BaiduMap---百度地图官方Demo之OpenGL绘制功能(介绍如何使用OpenGL绘制在地图中进行绘制)
  10. chrome添加右键菜单收藏CSDN文章到我的博客