「LOJ#10015」「一本通 1.2 练习 2」扩散(并查集

2023-05-16

题目描述

一个点每过一个单位时间就会向 444 个方向扩散一个距离,如图所示:两个点 ab 连通,记作 e(a,b),当且仅当 ab的扩散区域有公共部分。连通块的定义是块内的任意两个点 uv都必定存在路径 e(u,a0),e(a0,a1),…e(ak,v)

给定平面上的 n 个点,问最早什么时候它们形成一个连通块。

 

输入格式

第一行一个数 nnn ,以下 nnn 行,每行一个点坐标。

输出格式

输出仅一个数,表示最早的时刻所有点形成连通块。

样例

样例输入

2
0 0
5 5

样例输出

5

数据范围与提示

对于 20% 的数据,满足 1≤n≤5,1≤Xi,Yi≤50;

对于 100%的数据,满足 1≤n≤50,1≤Xi,Yi≤10^9。

题解

强行二分答案。

每次暴力枚举两个点,判断在当前时间是否接通了,如果接通了就在并查集里连接。

然后判断是否在同一个祖先之下,如果不在就调大时间,否则调小。

其实可以直接按两点距离从小到大去枚举边,如果枚举到一条边使在同一个祖先下,就找到了。


 1 /*
 2 编号     题目     状态     分数     总时间     内存     代码 / 答案文件     提交者     提交时间
 3 #222995     
 4 #10015. 「一本通 1.2 练习 2」扩散
 5     Accepted     100     31 ms     252 KiB     C++ / 1011 B     qwerta     2018-10-09 8:59:31
 6 */
 7 #include<iostream>
 8 #include<cstdlib>
 9 #include<cstdio>
10 #include<cmath>
11 using namespace std;
12 struct emm{
13     int x,y;
14 }a[53];
15 int dis[53][53];
16 int n;
17 int fa[53];
18 int fifa(int x)
19 {
20     if(fa[x]==x)return x;
21     return fa[x]=fifa(fa[x]);
22 }
23 inline bool con(int x,int y)
24 {
25     int u=fifa(x),v=fifa(y);
26     if(u==v)return 0;
27     fa[u]=v;
28     return 1;
29 }
30 void erfen(int l,int r)
31 {
32     if(l+1==r){cout<<r;exit(0);}
33     int mid=(l+r)>>1;
34     for(int i=1;i<=n;++i)
35     fa[i]=i;
36     int k=n;
37     for(int i=1;i<=n;++i)
38     for(int j=i+1;j<=n;++j)
39     {
40         if(dis[i][j]<=mid*2)
41         {
42             if(con(i,j))k--;
43         }
44     }
45     if(k==1)erfen(l,mid);
46     else erfen(mid,r);
47 }
48 int main()
49 {
50     scanf("%d",&n);
51     if(n==1){cout<<0;return 0;}
52     for(int i=1;i<=n;++i)
53       scanf("%d%d",&a[i].x,&a[i].y);
54     for(int i=1;i<=n;++i)
55       for(int j=i+1;j<=n;++j)
56         dis[i][j]=dis[j][i]=abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y);
57     erfen(0,2e9);
58     return 0;
59 }  

 

转载于:https://www.cnblogs.com/qwerta/p/9802282.html

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

「LOJ#10015」「一本通 1.2 练习 2」扩散(并查集 的相关文章

  • Ubuntu更换国内镜像源

    由于Ubuntu官方镜像速度有限 xff0c 可以使用国内镜像加速更新和下载 xff0c 节约时间 常用的国内镜像有很多 xff0c 本人常用的有如下几个 xff0c 仅供参考 163镜像 mirrors 163 com 清华镜像 mirr
  • ubuntu-2204 gerrit ssh 报错Permission denied (publickey).分析及解决

    ubuntu 2204 gerrit ssh 报错Permission denied publickey 分析及解决 使用repo init sync下载代码时遇到报错 Permission denied publickey 分析排查步骤
  • 消息序列化工具-protobuf介绍及安装使用技巧

    简介 protobuf是google团队开发的用于高效存储和读取结构化数据的工具 xml json也可以用来存储此类结构化数据 xff0c 但是使用protobuf表示的数据能更加高效 xff0c 并且将数据压缩得更小 xff0c 大约是j
  • 消息序列化工具-为现代C++设计的jsoncpp介绍与使用技巧

    概述 JSON 的全称为 xff1a JavaScript Object Notation xff0c 顾名思义 xff0c JSON 是用于标记 Javascript 对象的 xff0c JSON 官方的解释为 xff1a JSON 是一
  • cppcheck代码检查工具安装与使用技巧

    cppcheck代码检查工具安装与使用技巧 Cppcheck 是一种 C C 43 43 代码缺陷静态检查工具 不同于 C C 43 43 编译器及很多其它分析工具 xff0c 它不检查代码中的语法错误 Cppcheck 可以检查非标准代码
  • sed流编辑器中使用变量替换以及执行外部命令

    在使用sed对日志或者其它文本进行parse的过程当中 xff0c 有时候我们需要引用外部变量的值 xff0c 或者获取一个shell命令执行的结果 xff0c 以便达到更加可观的输出结果 这里介绍如何做到 sed 流编辑 1 sed命令及
  • (计蒜客) 取石子游戏 (gcd算法灵活运用)

    蒜头君和花椰妹在玩一个游戏 xff0c 他们在地上将 n 颗石子排成一排 xff0c 编号为 1 到 n 开始时 xff0c 蒜头君随机取出了 2 颗石子扔掉 xff0c 假设蒜头君取出的 2 颗石子的编号为 a b 游戏规则如下 xff0
  • mkisofs命令制作iso文件

    mkisofs命令行格式 mkisofs adDfhJlLNrRTvz print size quiet A lt 应用程序ID gt b lt 开机映像文件 gt c lt 开机文件名称 gt hide lt 目录或文件名 gt hide
  • windows下tree命令列出文件目录树

    windows下tree命令列出文件目录树 tree path f tree D AR C Team f 可以将D AR C Team目录下所有目录及子目录下的文件都打印出来 tree D AR C Team f gt HOMEPATH f
  • yum命令安装历史回滚彻底删除安装的依赖包

    yum命令安装一个软件包是会连同依赖包一起安装 xff0c 但是yum remove卸载时却只卸载这个文件包本身 如果需要删除安装时附加的依赖包可以使用yum history的相关操作实现回滚 假如安装了ecliipse pde xff0c
  • latex在ipython jupyter notebook中的使用

    In 2 from IPython display import Latex In 5 数学公式的前后要加上 或 和 Latex r 34 f x 61 3x 43 7 34 Out 5 In 6
  • wsl 镜像迁移

    wsl 镜像迁移 1 打开CMD xff0c 查看所有WSL wsl l all v NAME STATE VERSION Ubuntu 20 04 Stopped 2 centos Running 2 2 导出WSL wsl export
  • Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (一) 环境搭建

    Note 开启模块支持 xff0c 设置国内高速代理 xff0c 参考 https www jianshu com p d782d70b3a25 简介 搭建的目的只是刚好看到有这么一个模块 xff0c 还有给使用Go的人需要用到调试界面的时
  • Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (二) UI继承

    简介 在UI A 中嵌套UI B UI B 是前面搭建的一个UI控件 创建 UI 文件 创建UI TextWidget ObjectName TextWidget 文件名保存为 textwidget ui 拖了一个QTextWidget到创
  • Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (三) 信号 和 槽

    简述 如下图所示 xff0c 每个控件的信号对应都有一个Connect函数 例如Clicked信号就有一个ConnectClicked 示例 基于 Golang中使用Qt库 therecipe qt 43 QtDesigner 43 Gol
  • linux工作中软件运行安装常见问题

    本文主要内容是使用linux软件安装 以及运行时常出现的一些问题 xff0c 主要如下 xff1a sudo apt get update Unable to fetch some archives问题 soure 的区别export LD
  • Ubuntu OpenCV VideoCapture无法获取到摄像头图像

    现在做摄像头捕获视频实验 xff0c 使用ViedeCapture xff0c 出现如下错误 xff1a WARN 0 global home xgl opencv 4 3 0 modules videoio src cap v4l cpp
  • 字符串排序-C语言

    二 字符串排序 题目描述 输入一个长度不超过20的字符串 xff0c 对所输入的字符串 xff0c 按照ASCII码的大小从小到大进行排序 xff0c 请输出排序后的结果 输入描述 一个字符串 xff0c 其长度n lt 61 20 输出描
  • Unable to locate package sysv-rc-conf

    报错如下 xff1a 解决办法 xff0c 如下 xff1a 第一步 xff1a 在root权限下操作 xff0c 软件源列表sources list xff08 该文本的位置在vim etc apt sources list xff09
  • Gson使用方法

    一 概述 Gson是google提供的用来操作json数据的一个非常好用的类库 其使用范围非常的广泛 xff0c 所以非常有必要对其进行系统的学习 json是一种数据格式 xff0c 确切的说是一种文本数据格式 其在网络通讯过程中的作用非常

随机推荐

  • Centos7 安装jdk8

    使用rpm方式安装 1 jdk下载地址 xff1a https www oracle com java technologies downloads java8 2 安装 检测当前系统是否存在java环境 xff01 java versio
  • Nginx的https配置

    Nginx的https配置 参考地址 xff08 阿里云提交的教程链接 xff09 xff1a https help aliyun com document detail 212905 html spm 61 5176 b657008 he
  • Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException:

    Failed to parse multipart servlet request nested exception is java lang IllegalStateException The multi part request con
  • php7 mongodb 使用(二)原生驱动 增删改查和统计

    php7安装mongodb的扩展 宝塔面板环境下php7 3默认安装了pecl扩展包 xff0c 安装的php7 4版本是默认不带pecl扩展包的 需要手动安装 php版本 lt 7的时候 yum install php pear 就可以
  • 图论——spfa算法判断负权回路

    在最短路径模板 spfa算法中的模板只适用于不存在负权回路的图 xff0c 否则就会死循环 接下来做一下改动 xff0c 实现通过spfa算法判断是否存在负环 求负环的常用方法 xff0c 基于SPFA xff1a 统计每个点入队的次数 x
  • Python中的pip怎么配置环境变量

    https blog csdn net hanhanwanghaha宝藏女孩 欢迎您的关注 xff01 欢迎关注微信公众号 xff1a 宝藏女孩的成长日记 如有转载 xff0c 请注明出处 xff08 如不注明 xff0c 盗者必究 xff
  • 【Linux Posix】(19)网络编程II - 网络编程基础;网络编程主要函数

    目录 1 字节序列转换 1 1 字节序列转换概述 1 2 字节序列转换的函数 1 3 地址格式转换 2 网络编程基础 2 1 socket概述 2 2 套接字的三种类型 1 字节序列转换 1 1 字节序列转换概述 实验结论 xff1a 这台
  • Debian squid配置

    Basic squid conf etc squid3 squid conf instead of the super bloated default config file auth param basic program usr lib
  • Linux安装mysql以及遇到的问题解决办法

    话不多说 xff0c 直接开干 xff1a 1 mysql下载地址 xff08 这里使用的是5 7 28 xff09 官网地址 xff1a https dev mysql com downloads mysql 百度云地址 xff1a ht
  • kali-linux的搭建

    vmware kali的搭建 使用vmware搭建kali需要有kali的官方镜像 xff0c 这里给出镜像的下载地址 https mirrors tuna tsinghua edu cn kali images kali 2022 3 k
  • C++学习(一三零)规范路径canonical paths

    每个文件都只有一个规范路径 xff0c 可以有多个绝对路径和相对路径 绝对路径与系统相关 如果路径中别名 快捷方式 符号链接等内容 xff0c 规范路径都会将他们解析到实际的文件路径下
  • 树莓派4B外接电视机没反应的问题的解决

    解决办法 xff0c 修改文件 boot config txt
  • 宇宙射线 c++ || DFS

    题目 一个射线 xff0c 初始方向向上 一段时间后会分裂 xff0c 向该方向的左右45度分裂2条射线 宇宙射线会分裂那次 xff0c 每次会前进ai个单位长度 输入描述 第一行一个正整数 n n lt 61 30 表示分裂n次 第二行包
  • DDL 的恐惧 || 贪心

    题目 ZJM 有 n 个作业 xff0c 每个作业都有自己的 DDL xff0c 如果 ZJM 没有在 DDL 前做完这个作业 xff0c 那么老师会扣掉这个作业的全部平时分 所以 ZJM 想知道如何安排做作业的顺序 xff0c 才能尽可能
  • TT's Magic Cat -- 差分

    题意 TT 有一只猫 xff0c 它从 世界地图 选了 n 个城市 xff0c 用 ai 表示每个城市的资产 猫会给出几个操作 xff0c 区间 l r 的城市资产都加 c 在q次操作后 xff0c 输出所有城市的资产 Input 第一行有
  • 平衡字符串 c++ || 尺取法

    题目 一个长度为 n 的字符串 s xff0c 其中仅包含 Q W E R 四种字符 如果四种字符在字符串中出现次数均为 n 4 xff0c 则其为一个平衡字符串 现可以将 s 中连续的一段子串替换成相同长度的只包含那四个字符的任意字符串
  • 掌握魔法の东东 II Gym-270437

    题目 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c 记为a xff0c 范围区间是 0 到 A 1 xff09 和
  • week 13 程序设计 必做题

    A TT 的神秘任务1 xff08 必做 xff09 Example Input span class token number 8 span span class token number 10 span span class token
  • VS2019配置wxWidgets v3.1.5开发环境

    编译wxWidgets库 如果只是使用wxWidgets DLL库可以省略编译这一步 xff0c 直接下载编译好的库 http wxwidgets org downloads 点击 34 Download Windows Binarires
  • 「LOJ#10015」「一本通 1.2 练习 2」扩散(并查集

    题目描述 一个点每过一个单位时间就会向 444 个方向扩散一个距离 xff0c 如图所示 xff1a 两个点 a b 连通 xff0c 记作 e a b xff0c 当且仅当 a b的扩散区域有公共部分 连通块的定义是块内的任意两个点 u