[BZOJ1604] [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
2016-03-17 13:56
274 查看
传送门
http://www.lydsy.com/JudgeOnline/problem.php?id=1604题目大意
给定n个点的坐标和C,若两个点间的曼哈顿距离≤C,就连一条边,询问联通块个数和最大联通块大小给定n个点的坐标和C,若两个点间的曼哈顿距离\le C,就连一条边,询问联通块个数和最大联通块大小题解
曼哈顿距离转切比雪夫:(x,y)=(x+y,x−y)(x,y)=(x+y,x-y)切比雪夫距离:max(|x1−x2|,|y1−y2|)max(|x_1-x_2|,|y_1-y_2|)
转化为切比雪夫距离后原条件变为:max(|x1−x2|,|y1−y2|)≤Cmax(|x_1-x_2|,|y_1-y_2|)\le C
暴力其实就是n2枚举两点判断,但其实我们只要将最近的点间连边就可以暴力其实就是n^2枚举两点判断,但其实我们只要将最近的点间连边就可以
转化为最大我们就可以排序维护一维判断另一维了转化为最大我们就可以排序维护一维判断另一维了
我们按照x轴坐标排序后依次将点加入队列中,维护队列头尾x轴坐标之差≤C,也就是队列中的点都相连我们按照x轴坐标排序后依次将点加入队列中,维护队列头尾x轴坐标之差\le C,也就是队列中的点都相连
同时将队列中的点按y轴坐标维护一棵Splay,对新加入的点找到它满足条件的的前驱后继并查集连边即可同时将队列中的点按y轴坐标维护一棵Splay,对新加入的点找到它满足条件的的前驱后继并查集连边即可
注意y轴坐标可能相同注意y轴坐标可能相同
CODE
相关文章推荐
- 【LeetCode】138.Copy List with Random Pointer 复制带有随机指针的链表
- Hadoop+Spark与现有BI平台的整合
- Github Bash
- Webbench
- nginx的基本配置
- Dubbo架构设计详解
- 开发人员都喜欢的网站
- tomcat架构分析 (connector NIO 实现)
- ARM开发板系统的配置及OpenCV的安装配置
- MyEclipse配置Tomcat以及JDK
- 求两个数的最大公约数和最小公倍数的方法(注意排除Duger)
- Linux内核设计与实现 第五章
- Linux读书笔记第一周
- Lesson 4 按键
- GAGE Octopus系列PCI/PCIe采集卡
- LINUX CENTOS6.5 安装 SVN 以前权限的设置
- topshelf
- tomcat架构分析(connector BIO 实现)
- opewrt 之 crontab 之实际测试
- 创建第一个azure hadoop insight