Java实现并查集,合并时采用路径压缩算法。 如果合并时使用循环修改的方法,一次合并的时间复杂度就为N,无法接受 public class Union { public int[] id;//对应索引所在的集 public int[] sz;//所在集的size,合并时小集合大集 public in ...
分类:
编程语言 时间:
2019-01-27 16:36:19
阅读次数:
213
看到题解大部分都是用‘递归+路径压缩’做的,所以本蒟蒻就来发一篇‘循环+路径压缩版并查集’的题解。速度比递归版本更加优秀~~(其实循环代码还要好写一些)~~。 并查集的操作有三步,初始化查找祖先与合并。 既然并查集是来查找祖先的,那么初始化就必然是让每个点的祖先指向自己 ...
分类:
其他好文 时间:
2019-01-19 21:10:40
阅读次数:
191
一、栈和队列 1.定义: 2.操作:入栈/队列、出栈/队列、判断满/空 3:空间复杂度:O(n) 4:单次操作的时间复杂度:O(1) 5:区别: (1)先进先出(FIFO) (2)先进后出FILO 6:数组和链表皆可(线性表) 指针(辅助变量) 栈顶/底指针 队头/尾指针 关键:出入元素同时移动指针 ...
分类:
编程语言 时间:
2019-01-04 22:02:11
阅读次数:
217
并查集好啊! 虽然并查集很好,但是我对它的掌握却十分肤浅。 搬运算导 1.单用路径压缩复杂度$O(n+m (1+log_{2+m/n}n))$ 证明是不可能有的。 2.单用按秩合并并且记忆化复杂度$O(nlogn+m)$ 由于路径压缩也是一种记忆化,所以混合策略也有该上界。 复杂度显然。 3.假设所 ...
分类:
其他好文 时间:
2019-01-03 20:40:36
阅读次数:
186
C++语言 基础算法 位运算 快速幂 模拟 枚举 递推 递归 分治 二分 三分 排序 归并排序 离散化 倍增 贪心 高精度 数据结构 前缀和 差分 栈 对顶栈 单调栈 队列 双端队列 循环队列 单调队列 ST表 链表 链式前向星 Hash表 二叉堆 Huffman树 并查集 路径压缩 按秩合并 扩展 ...
分类:
其他好文 时间:
2018-12-23 15:22:40
阅读次数:
465
LCA指的是最近公共祖先,更具体的意义就不讲了. 求解LCA的方法有很多,这里讲解向上标记法,树上倍增法,tarjan求LCA. 向上标记法 1 从x向上走到根节点,并标记所有经过的节点. 2 从y向上走到根节点,第一次遇到的已标记的节点就是x和y的LCA. 但不难发现,这个算法只适用于求一个点和一 ...
分类:
其他好文 时间:
2018-12-22 18:33:25
阅读次数:
261
一、题面 POJ1984 二、分析 这题还是比较有意思的一题。 首先需要清楚的是,这题与普通并查集的区别在于它的节点之间的权值是二维的,因为是曼哈顿距离,肯定不能直接存距离,这样将不利于后面的路径压缩更新。 再看如何解题,先要把输入的数据存起来,因为后面是询问,关于方向的处理直接用正负即可。 存好数 ...
分类:
Web程序 时间:
2018-12-20 11:52:53
阅读次数:
210
一、题面 POJ1703 二、分析 需要将并查集与矢量法则相结合。par数组用以记录父节点,rank用以记录与父节点的关系。如题意,有两种关系,设定0是属于同一个帮派,1表示不属于同一个帮派。 运用并查集的时候判断x,y时考虑几种情况: 1.x与y父节点不相同:此时为不清楚两者关系。 2.x与y父节 ...
分类:
其他好文 时间:
2018-12-17 23:50:31
阅读次数:
208
1.3 Nginx性能优化 1.3.1 优化nginx worker进行个数 nginx服务主要有两个重要进程: 01) master进程:可以控制nginx服务的启动 停止 或重启 02) worker进程:处理用户请求信息,帮助用户向后端服务进行请求(php mysql) 添加worker进程方 ...
分类:
其他好文 时间:
2018-12-03 20:08:17
阅读次数:
197
不是很noip的知识点就不写了。 ~~dij什么的太easy就不写了。~~ "缩点" 注意$Tarjan$在缩边双和求强联通分量时候的区别。 一个要判断是否在栈内一个不要。 最后$topsort$来$dp$,或者记忆化搜索,但是一定要记得初值为$ 1$。 考虑图不联通。 "负环" 考虑图不联通。 一 ...
分类:
其他好文 时间:
2018-11-10 23:54:37
阅读次数:
279