P1661 扩散 二分答案 并查集

2023-05-16

  

题目描述

一个点每过一个单位时间就会向四个方向扩散一个距离,如图。

两个点a、b连通,记作e(a,b),当且仅当a、b的扩散区域有公共部分。连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。给定平面上的n给点,问最早什么时刻它们形成一个连通块。

输入输出格式

输入格式:

 

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

【数据规模】

对于20%的数据,满足1≤N≤5; 1≤X[i],Y[i]≤50;

对于100%的数据,满足1≤N≤50; 1≤X[i],Y[i]≤10^9。

 

输出格式:

 

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

 

输入输出样例

输入样例#1:  复制

2
0 0
5 5  
输出样例#1:  复制

5

二分答案且曼哈顿距离<=mid*2

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int xs[51];
int ys[51];//坐标
int ints[51];//并查集
int find(int n){
    if(ints[n]==n)return(n);
    return(ints[n]=find(ints[n]));
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++)cin>>xs[i]>>ys[i];
    int l=0,r=1000000000;
    int ans=0;//最终答案
    while(l<=r){
        int mid=(l+r)>>1;//二分答案
        for(register int i=0;i<n;i++){
            ints[i]=i;
        }//初始化并查集
        for(register int i=0;i<n;i++){
            for(register int j=i+1;j<n;j++){
               int dis=abs(xs[i]-xs[j])+abs(ys[i]-ys[j]);
               if(dis<=mid*2){//能扩散到就连边
                   int aa=find(i),ab=find(j);
                   if(aa!=ab)ints[aa]=ab;
               }
            }
        }
        int cnt=0;//连通块个数
        for(register int i=0;i<n;i++){
            if(ints[i]==i)cnt++;
        }
        if(cnt==1){
            ans=mid;
            r=mid-1;
        }//只有一个连通块就更新答案向下查找
        else{
            l=mid+1;
        }
    }
    cout<<ans<<endl;
    return(0);
}  
View Code

 





转载于:https://www.cnblogs.com/bxd123/p/10958717.html

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

P1661 扩散 二分答案 并查集 的相关文章

  • Verilog中变量位宽注意

    Verilog中 xff0c 变量定义方式可以为 xff1a reg 位宽 1 0 数据名 xff1b reg 位宽 1 数据名 其他变量也类似 以reg变量cnt为例 xff0c 当cnt位宽为4时 xff0c 可定义为reg 3 0 c
  • 使用PaintCode便捷地实现动画效果

    ViewController m paintCodeTestOC Created by LongMa on 2019 7 25 import 34 ViewController h 34 64 interface ViewControlle
  • 定位地图

    1 在iOSApp开发中 xff0c 尤其是O2O类型的的App往往包含着定位或地图这两项功能 xff0c 所以说定位和地图是iOS开发中一种常用的第三方 xff08 iOS自带高德地图 xff09 2 定位 xff1a 首先我们先来说说定
  • EXCEL中,将十六进制转换为十进制

    一 背景 1 在EXCEL表格中 xff0c 将十六进制转换为十进制的常用方法是 xff1a 使用HEX2DEC函数 2 在EXCEL的一个单元格中 xff0c 如果输入形如 34 12E36 34 之类的可以被成功识别为 科学计数法 的文
  • 关于Linux CentOS 7 中文字体安装过程心得

    一 CentOS 7 中查看现有字库 1 查看系统正在使用的语言 echo LANG en US UTF 8 2 查看系统当下所有语言环境 locale LANG 61 en US UTF 8 LC CTYPE 61 34 en US UT
  • 通过 edu 邮箱登录 Office 365 获得 1 TB 的 OneDrive 空间的方法

    要求 xff1a 你是在读大学生或高校 科研院所的教职员 1 在你就读或就业的高校或科研机构的官方网站上注册 edu 邮箱 2 登录 https www office com xff0c 用该邮箱登录 3 登录后即可启用 Office 教育
  • sqlserver 插入 更新 删除 语句中的 output子句

    官方文档镇楼 xff1a https docs microsoft com zh cn previous versions sql sql server 2008 ms177564 v 61 sql 100 从sqlserver 2005开
  • codeblocks常用快捷键

    codeblocks常用快捷键 CodeBlocks常用操作快捷键 编辑部分 xff1a Ctrl 43 A xff1a 全选 Ctrl 43 C xff1a 复制 Ctrl 43 X 剪切 Ctrl 43 V xff1a 粘贴 Ctrl
  • 1605 迷宫

    难度 xff1a 普及 题目类型 xff1a 深搜 提交次数 xff1a 1 涉及知识 xff1a 深搜 题目背景 迷宫 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍 xff0c 障碍处不可通过 给定起点坐标和 终点坐标
  • Python3列表(list)比较操作教程

    一 相等比较 1 1 同顺序列表比较 顺序相同直接用 61 61 进行比较即可 list1 61 34 one 34 34 two 34 34 three 34 list2 61 34 one 34 34 two 34 34 three 3
  • 知识点 channel的使用

    package demo channel import 34 fmt 34 34 time 34 func main 无缓存chan ch 61 make chan int go func fmt Println 34 执行 34 ch l
  • 第五周课程总结&试验报告(三)

    实验三 String类的应用 实验目的 掌握类String类的使用 xff1b 学会使用JDK帮助文档 xff1b 实验内容1 已知字符串 xff1a 34 this is a test of java 34 按要求执行以下操作 xff1a
  • 花了快一天,才搞出来的一个client-go的demo

    用来直接获取所有service的annotaion里有ambassador的东东 或者 xff0c watch集群事件 package main import 34 fmt 34 34 os 34 34 time 34 34 strings
  • Python 入门 之 类成员

    Python 入门 之 类成员 1 类的私有成员 xff1a 私有 xff1a 只能自己拥有 以 开头就是私有内容 对于每一个类的成员而言都有两种形式 xff1a 公有成员 xff0c 在任何地方都能访问 私有成员 xff0c 只有在类的内
  • 微信小程序里两种比较时间的方法

    说明 xff1a end time是数组时的其中一个对象里的字段 1 使用过滤器 wxml 引用文件 lt wxs src 61 34 filter wxs 34 module 61 34 filterNum 34 gt 使用方法 lt v
  • error: this 'if' clause does not guard... [-Werror=misleading-indentation]

    解决办法就是if语句的下面加 报错的 if pMem return LOS NOK 修改后 if pMem return LOS NOK 转载于 https www cnblogs com 429512065qhq p 10607924 h
  • 【2020/3/12】Java 提示 java.lang.ClassNotFoundException(错误: 找不到或无法加载主类)的解决办法

    1 在用 java exe 运行指定的 java 字节码文件之前 xff0c 需要先用 javac exe 将准备执行的 java 文件进行编译 方法是 xff1a javac java java 的 号代表文件名 编译成功后 xff0c
  • Error in library(DESeq2) : 不存在叫‘DESeq2’这个名字的程辑包

    Error in read dcf file path pkgname 34 DESCRIPTION 34 c 34 Package 34 34 Type 34 无法打开链结 此外 Warning messages 1 In downloa
  • 2 基于梯度的攻击——PGD

    PGD攻击原论文地址 https arxiv org pdf 1706 06083 pdf 1 PGD攻击的原理 PGD xff08 Project Gradient Descent 攻击是一种迭代攻击 xff0c 可以看作是FGSM的翻版
  • Rust 基本类型

    基本类型 像其他语言一样 xff0c Rust同样在标准库中內建了许多基本类型 bool span class hljs keyword let span x 61 span class hljs keyword true span spa

随机推荐