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

2023-11-20

题目链接


  正难则反。

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

  那么,就是阻止从左上角到右下角的所有相交圆,于是,就是要变成没有从左上角到右下角的相交圆才可以,那么不妨跑一个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;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[SDOI2012]拯救小云公主【bfs+二分答案】 的相关文章

  • BFS和DFS的python实现(要记住)

    BFS DFS python模板与实现 BFS模板 1 无需分层遍历 while queue 不空 xff1a cur 61 queue pop for 节点 in cur的所有相邻节点 xff1a if 该节点有效且未访问过 xff1a
  • BFS与 DFS题目练习(python)

    107 二叉树的层序遍历 II 难度中等423 给定一个二叉树 xff0c 返回其节点值自底向上的层序遍历 xff08 即按从叶子节点所在层到根节点所在的层 xff0c 逐层从左向右遍历 xff09 例如 xff1a 给定二叉树 3 9 2
  • P1825 [USACO11OPEN]Corn Maze S——bfs

    USACO11OPEN Corn Maze S 题面翻译 奶牛们去一个 N M N times M N M 玉米迷宫 xff0c 2
  • 走迷宫(bfs)

    给你一个 n 行 m 列的二维迷宫 39 S 39 表示起点 xff0c 39 T 39 表示终点 xff0c 39 39 表示墙壁 xff0c 39 39 表示平地 你需要从 39 S 39 出发走到 39 T 39 xff0c 每次只能
  • 计蒜客-蒜头君回家(bfs)

    蒜头君要回家 xff0c 但是他家的钥匙在他的朋友花椰妹手里 xff0c 他要先从花椰妹手里取得钥匙才能回到家 花椰妹告诉他 xff1a 你家的钥匙被我复制了很多个 xff0c 分别放在不同的地方 蒜头君希望能尽快回到家中 xff0c 他需
  • [二分答案] 洛谷P1873 砍树

    目录 题意样例样例输入 xff1a 样例输出 思路总结代码 题意 伐木工人米尔科需要砍倒M米长的木材 这是一个对米尔科来说很容易的工作 xff0c 因为他有一个漂亮的新伐木机 xff0c 可以像野火一样砍倒森林 不过 xff0c 米尔科只被
  • c++:DFS与BFS详解

    DFS xff08 深度优先搜索 xff09 xff1a 从某个状态开始 xff0c 不断转移状态到无法转移为止 xff0c 然后退回到前一步 xff0c 继续转移到其他状态 xff0c 不断重复 xff0c 直至找到最终的解 总是从最开始
  • 每日一题:二分答案

    二分答案 题目 Daimayuan Online Judge 首先读入 n 和 k 然后读入序列 a 接下来使用 l 和 r 表示最小值的猜测区间 由于题目中规定了最小值和元素范围 因此我们可以将上界设置为 1e18 下界设置为 1 二分查
  • Codeforces Round #291 (Div. 2)

    题目链接contest 514 A Chewba ca and Number 不允许有前导零 所以如果第一位是9的话 需要特别考虑 一开始理解错了题意 又WA了呜呜呜 include
  • 编程训练————岛屿数量(C++)

    岛屿数量 题目描述 主要思想 深度优先搜索 广度优先搜索 代码实现 深度优先搜索 广度优先搜索 题目描述 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向或竖直方向上
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • uva 1601 The Morning after Halloween code2

    题目 The Morning after Halloween 题意 有n个用小写字母表示的鬼和一张地图 每个鬼都要移动到对应的大写字母 两个鬼的位置不能在一次移动中交换 问最少步数 思路 双向bfs 此题还可以单向bfs 见code1 1
  • 搜索学习心得

    在学习了众多搜索的方式后 不由感慨 啊 太巨了 今天huayucaiji我就给大家讲一讲C 搜索的心得吧 深度优先搜索 广度优先搜索 迭代加深搜索 一个一个讲吧 深度优先搜索 深度优先搜索 下简称 深搜 简称DFS 是简洁明了的搜索方式 以
  • 层序遍历与BFS广度(宽度)遍历搜索算法(C++)

    算法竞赛 file author jUicE g2R qq 3406291309 彬 bin 必应 一个某双流一大学通信与信息专业大二在读 brief 一直在算法竞赛学习的路上 copyright 2023 8 COPYRIGHT 原创技术
  • 图论 笔记

    关于存图 如果是有权值的边 可以用pair define pii pair
  • 迷宫 蓝桥杯 602

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 1 的为障碍 标记为 0 的为可以通行的地方 010000 000100 001001 110000 迷宫的入口为左上
  • 第十届蓝桥杯省赛C++B组 迷宫

    试题 E 迷宫 本题总分 15 分 问题描述 下图给出了一个迷宫的平面图 其中标记为 1 的为障碍 标记为 0 的为可 以通行的地方 010000 000100 001001 110000 迷宫的入口为左上角 出口为右下角 在迷宫中 只能从
  • 长草(Python)

    题目描述 小明有一块空地 他将这块空地划分为 n 行 m 列的小块 每行和每列的长度都为 1 小明选了其中的一些小块空地 种上了草 其他小块仍然保持是空地 这些草长得很快 每个月 草都会向外长出一些 如果一个小块种了草 则它将向自己的上 下
  • 方板围棋吃子换001

    1 描述 130给定一个二维的矩阵 包含 X 和 O 字母 O 找到所有被 X 围绕的区域 并将这些区域里所有的 O 用 X 填充 示例 X X X X X O O X X X O X X O X X 运行你的函数后 矩阵变为 X X X
  • 二分答案总结&例题解析

    对于二分我们最初的了解 就是在一个一次函数中 对于要求的点 x y 已知y 对于包含x值的区间二分 根据函数值与y比较 逐步靠近要求的点 直到最终求出要求的点 在程序执行时 二分的时间复杂度为logn 可以极大的减少查找的时间 二分的应用

随机推荐

  • 记录一下实验室的GPU信息

    通过如下查询指令 cd usr local cuda samples 1 Utilities deviceQuery sudo make deviceQuery 最终得到如下信息 Detected 1 CUDA Capable device
  • C# Socket连接请求超时处理

    在Socket的超时时间默认20多秒 而实际连上不需1秒时间 20多秒很多时候用户是不能接受的 而在等待返回结果的这段时间里程序会处于停止响应状态 废话不多说了 先上代码 private delegate string ConnectSoc
  • shell入门学习-位置变量

    1 位置变量定义 在执行脚本或命令时 传递给脚本或命令的参数 2 位置变量demo效果如下图 3 1 sh脚本如下 4 注意 如果脚本后面不输入任何参数 如下图所示 如果脚本后面只添加1个数据 如下图所示 如果脚本后面的参数超过脚本定义的位
  • 解决Review Manager(RM)很卡的方法(方法来源网络)

    1 断网 禁用网络连接 拔网线等均行 看你喜欢 2 利用Windows Win10 自带防火墙程序禁止RM联网 控制面板 网络和internet 系统和安全 windows defender防火墙 高级设置 出站规则 新建规则 下一步 此程
  • jquery的ajax获取后台数据

    前言 这里获取了小米商城的一个后台地址 效果图 源码 div p 后台拿到的总数 span style color red font size 18px span p hr ul ul div
  • 基础知识十一、Python解析网络报文之TCP首部报文解析

    文章目录 一 TCP首部解析器的实现 二 测试逻辑 上一节解析了 IP首部报文后 本节继续解析TCP报文首部 TCP协议处于OSI七层模型的传输层 传输层的作用就是负责管理端到端的通信连接问题 连续ARQ automatic repeat
  • 初始泛型类

    泛型的顶级理解 一 包装类 1 基本数据类型和对应的包装类 2 装箱和拆箱 3 自动装箱和拆箱 二 泛型 1 语法 2 泛型类的使用 3 示例 4 擦除机制 5 泛型上界 6 示例和复杂示例 7 泛型方法 一 包装类 在Java中 由于基本
  • JAVA 【爬虫】 Selenium 无头浏览,禁止加载图片,启动参数,失效,无效

    JAVA Selenium 无头浏览 禁止加载图片 启动参数 失效 无效 可能有如下几个原因 代码问题 命令参数写错 无头浏览 headless 禁止加载图片 blink settings imagesEnabled false Chrom
  • DS1302芯片介绍

    低功耗时钟芯片DS1302可以对年 月 日 时 分 秒进行计时 且具有闰年补偿等多种功能 DS1302的性能特性 实时时钟 可对秒 分 时 日 周 月以及带闰年补偿的年进行计数 用于高速数据暂存的31 8位RAM 最少引脚的串行I O 2
  • MySQL安装与使用(Windows)

    Windows平台提供了两种安装MySQL的方式 1 图形化安装 msi安装文件 链接 link 2 免安装 zip压缩文件 链接 link 安装MySQL 一 图形化安装 1 双击下载的 MySQL 安装文件 进入 MySQL 安装界面
  • Socket编程中的强制关闭与优雅关闭及相关socket选项

    以下描述主要是针对windows平台下的TCP socket而言 首先需要区分一下关闭socket和关闭TCP连接的区别 关闭TCP连接是指TCP协议层的东西 就是两个TCP端之间交换了一些协议包 FIN RST等 具体的交换过程可以看TC
  • 虚拟机三种网络模式

    基本知识 ipconfig查看信息 网关 Gateway 又称网间连接器 协议转换器 是你连接到的上层节点的地址 ip地址是你本身的地址 如果是路由器分配的 那么是路由器所构建的内网地址 网卡 需要网卡才能连接其他设备 是设备端的 交换机
  • vscode+phpstudy配置php环境

    1 先打开phpstudy 将WAMP启动 2 点击左侧的软件管理 随便选一个版本的php安装 我这里下的是5 3 29版本的 3 点击上面的系统环境 找到刚刚安装好的php 进入设置 点击扩展选项 将XDebug调试组件打开 并记下端口
  • MEF:COA-NET

    COA NET COLLABORATIVE ATTENTION NETWORK FOR DETAIL REFINEMENT MULTI EXPOSURE IMAGE FUSION COA NET 用于细节细化多曝光图像融合的协作关注网络 近
  • [Js进阶]如何用jquery获取到shadowRoot里的内容

    HTML组件相关的标准 HTML Template Shadow DOM 则是原生组件封装的基本工具 它可以实现组件与组件之间的独立性 Custom Elements 是用来包装原生组件的容器 通过它 你就只需要写一个标签 就能得到一个完整
  • python计算工资编程-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器 分享给大家供大家参考 具体如下 正好处于找工作期间避免不了会跟单位谈论薪资的情况 当然所有人跟你谈的都是税前收入 税后应该实际收入有多少呢 今天就简单写一个个人税收收入计算器 仅仅是觉
  • Linux下uboot编译出错(/bin/bash: arm-none-linux-gnueabi-gcc: command not found )

    unboot压缩包解压 tar xz 在终端进入解压目录 xz d tar xz tar xvf tar 向Makefile添加编译路径 在makefile的开头添加本机的编译路径 ARCH arm CROSS COMPILE opt fs
  • 【error】org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/geoserver]启动失败

    error org apache catalina core StandardContext startInternal 由于之前的错误 Context geoserver 启动失败 tomcat10配置geoserver war包启动错误
  • Android 一些常见BUG汇总(持续更新)

    写在前面的话 每个开发者在工作中会遇到或多或少的小bug 这里博主把它们记录下来 以便以后查阅 开始 1 file storage emulated 0 DCIM xxx jpg exposed beyond app through Cli
  • [SDOI2012]拯救小云公主【bfs+二分答案】

    题目链接 正难则反 要直接求从起点到终点的最大距离 不妨反过来求最小的可以阻止骑士从起点到终点的对于全体圆的最小半径 那么 就是阻止从左上角到右下角的所有相交圆 于是 就是要变成没有从左上角到右下角的相交圆才可以 那么不妨跑一个bfs来判断