LOJ10015扩散
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 行,每行一个点坐标。
输出仅一个数,表示最早的时刻所有点形成连通块。
对于 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扩散的更多相关文章
- 纯css3圆形从中心向四周扩散动画效果
查看效果:http://hovertree.com/texiao/css3/37/ 先来个简单的示例,例如: @keyframes hovertreemove{from {top:30px;}to { ...
- 【转】Matlab练习程序(各向异性扩散)
http://www.cnblogs.com/tiandsp/archive/2013/04/18/3029468.html 主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留 ...
- Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer
Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer 1. Java NIO(New Input/Output)1 1.1. 变更通知(因为每个事件都需要一个监听者 ...
- Atitit.病毒木马程序的感染 传播扩散 原理
Atitit.病毒木马程序的感染 传播扩散 原理 1. 从木马的发展史考虑,木马可以分为四代 1 2. 木马有两大类,远程控制 vs 自我复制传播1 3. 自我复制2 3.1. 需要知道当前cpu ...
- 洛谷P1661 扩散
题目描述 一个点每过一个单位时间就会向四个方向扩散一个距离,如图. 两个点a.b连通,记作e(a,b),当且仅当a.b的扩散区域有公共部分.连通块的定义是块内的任意两个点u.v都必定存在路径e(u,a ...
- [unity3d程序] 纹理扩散
纹理扩散适合与做游戏的背景(卷轴效果),原理就是让材质贴图动起来(循环运动),代码很简单希望对大家有用 1 2 3 4 5 6 7 8 9 10 11 12 13 // Scroll main tex ...
- Discuz X1.5 利用添加好友处存储xss进行蠕虫worm扩散
Discuz X1.5 在添加好友的地方有处存储xss,借助此处xss跟用户交互可以进行蠕虫指数扩散. 位置在添加好友处 x完之后的效果 点击后触发 ok 借助此存储xss,我们进行worm传播,dz ...
- 用HTML5 Canvas 做擦除及扩散效果
2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...
- 一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)
ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE.尽管,这个算法是几个法国人提出的,但是算法却有一个日文的名字.KAZE是日语‘风’的谐音,最近宣布退休的宫崎骏所拍摄的影片“起风了” ...
随机推荐
- AWS中国区使用https访问部署在S3上的网站
问题描述 最近一个项目需要通过https的方式访问部署在S3上的网站,通过搜索引擎找到一篇文章,可以在AWS Global实现整个过程.但是目前AWS中国区有限制,CloudFront不能使用AWS ...
- mysql的binlog+maxwell+kakka
1.业务库痛点及解决⽅案 初期出⾏业务的订单相关,是以mysql作为业务库为基准的,但是随着业务线增多,每⽇新增数据指 数上涨,⼏乎在每天的⾼峰期期间,都会出现业务库所在服务器的cpu.IO.内存等跑 ...
- Redis必知必会系列
1.常用命令 https://www.cnblogs.com/huozhonghun/p/11636053.html 2.Redis是什么 Redis 是 C 语言开发的一个开源的(遵从 BSD 协议 ...
- 安装蓝鲸paas社区版
安装蓝鲸paas社区版http://docs.bk.tencent.com/bkce_install_guide/setup/get_ready.html#hostssystemctl stop fi ...
- Docker Java 镜像基础(四)
基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像 构建 centos:latest 基础镜像: # 下 ...
- selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
#通过借助百度AI开放平台识别验证码登录职教云 from PIL import Image from aip import AipOcr import unittest # driver.get(zj ...
- xtrabackup_binlog_info
文件保存了备份结束时刻binlog的名称和位置
- 【Oracle】查看oracle用户相关权限
系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'CHAXUN' UNION ALL SELECT * FROM DBA_SYS_PRIVS WHER ...
- Lnux:实验 Linux C 编程
实验题目: 实验 3 Linux C 编程 实验目的和要求: 熟悉 Linux 操作系统环境 在 Linux 下编写.执行简单的 C 程序 用 C 语言写自己的 Linux 命令 实验过程: 认真 ...
- Mysql--由prepared sql statement引发的问题
问题回顾 最近生产环境数据库查询接口异常,抛出异常信息表明预处理sql语句声明已经超过mysql系统设置限制max_prepared_stmt_count:通过网上一些资料,分析大概是程序中数据库查询 ...