[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之走地图(迷宫)

    题目 xff1a 东东找妹纸 东东手里有一张神奇的地图 xff0c 通过地图可以找到妹子 xff01 地图显示 xff0c 0表示可以走 xff0c 1表示不可以走 xff0c 左上角是入口 xff0c 右下角是妹纸 xff0c 这两个位置
  • P1825 [USACO11OPEN]Corn Maze S——bfs

    USACO11OPEN Corn Maze S 题面翻译 奶牛们去一个 N M N times M N M 玉米迷宫 xff0c 2
  • 计蒜客-蒜头君回家(bfs)

    蒜头君要回家 xff0c 但是他家的钥匙在他的朋友花椰妹手里 xff0c 他要先从花椰妹手里取得钥匙才能回到家 花椰妹告诉他 xff1a 你家的钥匙被我复制了很多个 xff0c 分别放在不同的地方 蒜头君希望能尽快回到家中 xff0c 他需
  • C/C++无向图的遍历(bfs和dfs)

    描述 简单介绍一下图 xff0c 图就是由一些小圆点 xff08 称为顶点 xff09 和连接这些小圆点的直线 xff08 称为边 xff09 组成的 例如下图的由五个顶点 xff08 编号1 2 3 4 5 xff09 和五条边 xff0
  • 【leetcode】44. 通配符匹配(wildcard-matching)(BFS)[困难]

    链接 https leetcode cn com problems wildcard matching 耗时 解题 xff1a 4 5 h 题解 xff1a 36 min 题意 给定一个字符串 xff08 s xff09 和一个字符模式 x
  • 2020.2.22 排位赛 G - Bucket Brigade(BFS)

    Bucket Brigade 题面 题目分析 BFS模板题 代码 span class token macro property span class token directive keyword include span span cl
  • Codeforces Round #291 (Div. 2)

    题目链接contest 514 A Chewba ca and Number 不允许有前导零 所以如果第一位是9的话 需要特别考虑 一开始理解错了题意 又WA了呜呜呜 include
  • LeetCode_433. 最小基因变化

    题目链接 力扣 这道题是一道经典的BFS题型 我觉得可能会踩坑导致不能一次AC的地方有两处 一是bankSize可能为0 那么我们开辟一个记录数组的时候会报错 二是题目所说的 起始基因序列 start 默认是有效的 但是它并不一定会出现在基
  • 图的遍历方法——DFS和BFS

    DFS类似于树的先序遍历 因此可以用递归实现 BFS类似于树的层次遍历 因此可以用队列实现 说明 下面代码中图的存储方式是邻接表 关于邻接表和邻接矩阵可看邻接表和邻接矩阵 1 深度优先遍历 Depth First Search 思想 从图中
  • uva 1601 The Morning after Halloween code2

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

    1 题目描述 小明有一块空地 他将这块空地划分为 n 行 m 列的小块 每行和每列的长度都为 1 小明选了其中的一些小块空地 种上了草 其他小块仍然保持是空地 这些草长得很快 每个月 草都会向外长出一些 如果一个小块种了草 则它将向自己的上
  • 【2019年ICPC南昌网络赛】Distance on the tree【DFS+线段树合并(可持久化线段树)】

    题目链接 DSM Data Structure Master once learned about tree when he was preparing for NOIP National Olympiad in Informatics i
  • HDU--1242:Rescue (BFS)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1242 2 易错点 可能存在多个朋友 即多个map 中有多个 r 所以起始点为Angel的位置 最短时间为到达最近的朋友的时间 3 源代码 H
  • Salary Changing【Codeforces 1251 D】【二分答案】

    Educational Codeforces Round 75 Rated for Div 2 D 题意 有N名员工和S元钱 然后我们想知道在每一名员工有薪资要求在 li ri 的情况下 我们如何在总共就S元钱的情况下做到员工薪资的中位数最
  • Educational Codeforces Round 67 (Rated for Div. 2)

    contest链接 A Stickers and Toys time limit per test 2 seconds memory limit per test 256 megabytes input standard input out
  • 迷宫 蓝桥杯 602

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 1 的为障碍 标记为 0 的为可以通行的地方 010000 000100 001001 110000 迷宫的入口为左上
  • LeetCode_BinaryTree_1129. Shortest Path with Alternating Colors 颜色交替的最短路径【BFS求最短路径】【java】【中等】

    一 题目描述 英文描述 You are given an integer n the number of nodes in a directed graph where the nodes are labeled from 0 to n 1
  • 第十届蓝桥杯省赛C++B组 迷宫

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

    题目链接 点从z 0为起点 想跑到z h 只能在球内 或者是球表层上跑 问能否从起点跑到终点 直接暴力bfs判断即可 include
  • 数据结构--树存储结构 & 深度优先遍历 & 广度优先遍历 通俗易懂

    树的概念 首先 树是一种常用的非线性数据结构 是以边 Edge 相连的节点 Node 的集合 每个节点存储对应的值 当存在子节点时与之相连 根节点 是树的首个节点 边 所有节点都由边相连 用于标识节点间的关系 叶子结点 树的末端节点 它们没

随机推荐

  • 记录一下实验室的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来判断