10015. 「一本通 1.2 练习 2」扩散

 
题目描述

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

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

输入格式

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

输出格式

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

样例
输入复制
2
0 0
5 5
输出复制
5
 
数据范围与提示

对于 20% 的数据,满足1<=n<=5,1<=x_i,y_i<=50 ;

对于 100% 的数据,满足1<=n<=50,1<=x_i,y_i<=1e9 。

_______________________________________

二分出最短时间d,那么d时间内每个点扩展d距离,则两点的距离缩短2*d距离,距离小于2*d的点就连同了。

枚举每两个点的距离判断是否小于2d,并用并查集维护。

判断并查集是否合并了n-1次就可以了!

_______________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 struct node
4 {
5 int x,y;
6 }ns[55];
7 int f[55];
8 int n;
9 int find(int x)
10 {
11 return f[x]==x?x:f[x]=find(f[x]);
12 }
13 void join(int x,int y)
14 {
15 int xx=find(x),yy=find(y);
16 f[xx]=yy;
17 }
18 int dis(int aa,int bb)
19 {
20 node a=ns[aa],b=ns[bb];
21 int xx,yy;
22 xx=a.x>b.x?a.x-b.x:b.x-a.x;
23 yy=a.y>b.y?a.y-b.y:b.y-a.y;
24 return xx+yy;
25 }
26 bool pd(int d)
27 {
28 d<<=1;
29 int cnt=0;
30 for(int i=1;i<=n;++i)f[i]=i;
31 for(int i=1;i<=n;++i)
32 for(int j=i+1;j<=n;++j)
33 if(dis(i,j)<=d && find(i)!=find(j))
34 {
35 join(i,j);
36 cnt++;
37 }
38 return cnt==n-1;
39 }
40 int main()
41 {
42 scanf("%d",&n);
43 for(int i=1;i<=n;++i)scanf("%d%d",&ns[i].x,&ns[i].y);
44 int l=1,r=1000000000,ans;
45 while(l<=r)
46 {
47 int mid=(l+r)>>1;
48 if(pd(mid))ans=mid,r=mid-1;
49 else l=mid+1;
50 }
51 cout<<ans;
52 return 0;
53 }

LOJ10015扩散的更多相关文章

  1. 纯css3圆形从中心向四周扩散动画效果

    查看效果:http://hovertree.com/texiao/css3/37/ 先来个简单的示例,例如: @keyframes hovertreemove{from {top:30px;}to { ...

  2. 【转】Matlab练习程序(各向异性扩散)

    http://www.cnblogs.com/tiandsp/archive/2013/04/18/3029468.html 主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留 ...

  3. Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer

    Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer 1. Java NIO(New Input/Output)1 1.1. 变更通知(因为每个事件都需要一个监听者 ...

  4. Atitit.病毒木马程序的感染 传播扩散 原理

    Atitit.病毒木马程序的感染 传播扩散 原理 1. 从木马的发展史考虑,木马可以分为四代 1 2. 木马有两大类,远程控制  vs  自我复制传播1 3. 自我复制2 3.1. 需要知道当前cpu ...

  5. 洛谷P1661 扩散

    题目描述 一个点每过一个单位时间就会向四个方向扩散一个距离,如图. 两个点a.b连通,记作e(a,b),当且仅当a.b的扩散区域有公共部分.连通块的定义是块内的任意两个点u.v都必定存在路径e(u,a ...

  6. [unity3d程序] 纹理扩散

    纹理扩散适合与做游戏的背景(卷轴效果),原理就是让材质贴图动起来(循环运动),代码很简单希望对大家有用 1 2 3 4 5 6 7 8 9 10 11 12 13 // Scroll main tex ...

  7. Discuz X1.5 利用添加好友处存储xss进行蠕虫worm扩散

    Discuz X1.5 在添加好友的地方有处存储xss,借助此处xss跟用户交互可以进行蠕虫指数扩散. 位置在添加好友处 x完之后的效果 点击后触发 ok 借助此存储xss,我们进行worm传播,dz ...

  8. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  9. 一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)

    ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE.尽管,这个算法是几个法国人提出的,但是算法却有一个日文的名字.KAZE是日语‘风’的谐音,最近宣布退休的宫崎骏所拍摄的影片“起风了” ...

随机推荐

  1. Android驱动学习-app调用内核驱动过程(驱动框架回顾)

    考研已经过去了,android驱动的学习也断了半年多了,现在重新捡起来学习,回顾一下Android驱动的大体框架. Android系统的核心是java,其有一个David虚拟机.Android-app ...

  2. cmd命令符大全

    cmd命令大全(第一部分) winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更 ...

  3. mysql数据库的连接以及增删改查Java代码实现(转载)

    每天叫醒自己的不是闹钟,而是梦想 数据库: create table t1(id int primary key not null auto_increment,name varchar(32),pa ...

  4. java函数方法学习

    1.函数(方法)定义 类中特定功能小程序 2.函数定义格式 修饰符 返回值类型 函数名 (参数类型 形式参数) { 执行语句; return 返回值 } 函数功能实现的2个明确 1.这个功能的结果是什 ...

  5. 基于Python的邮件检测工具

    邮件快速检测工具 概要介绍 mmpi,是一款使用python实现的开源邮件快速检测工具库,基于community框架设计开发.mmpi支持对邮件头.邮件正文.邮件附件的解析检测,并输出json检测报告 ...

  6. CSS&&label_div

    Css-div部分 本章主要内容 0.基础知识 1.CSS概述 2.CSS基础语法 3.CSS选择器 4.CSS主要属性 5.CSS核心机制-盒子模型 6.CSS重点和难点-定位 7.综合示例 基础知 ...

  7. Itranswarp 搭建个人 Wiki

    www.swack.cn - 原文链接:Itranswarp 搭建个人 Wiki 从零开始 搭建个人Wiki站点 Itranswarp.js 是一款基于nodejs开发的博客系统,通过Apache L ...

  8. 分装button组件引发的内存泄漏问题

    这个问题其实一开始在vue里写的时候并没有注意到这一点,也没有报错,直到在react里写的时候给我报了一堆错之后,经各种磨烂之后最终找到是分装button组件的问题,既然找到问题在哪就好办了 直接先上 ...

  9. 使用正则表达式和urllib模块爬取最好大学排名信息

    题目 使用urllib模块编程实现爬取网站的大学排名. (网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html) (1)获取网站页面,分析代 ...

  10. 使用 C# 9 的records作为强类型ID - 路由和查询参数

    上一篇文章,我介绍了使用 C# 9 的record类型作为强类型id,非常简洁 public record ProductId(int Value); 但是在强类型id真正可用之前,还有一些问题需要解 ...