并查集可实现集合的快速合并与查找操作。路径压缩后的并查集可将每次合并或者查找的操作复杂度降低到O(1).我的代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAXN 100005 8 9 ...
分类:
其他好文 时间:
2015-02-20 18:37:15
阅读次数:
150
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3757题解:颜色种数不太好用树形数据结构维护,因为子节点的信息不能快速合并为父节点的信息。而莫队算法正是解决这类题目的利器。节点与节点间的转移可以戳vfleaking的blog:http://vf...
分类:
移动开发 时间:
2015-01-26 13:24:02
阅读次数:
254
在上一篇“连通性问题”中已经对这个问题进行来介绍,在这一篇中给出针对以上问题的改进,在代码中已经对原理进行来注释。加权快速合并算法 1 /** 2 * @file weightedquickunion.c 3 * @brief 加权快速合并算法 4 * 在合并操作中,不是任...
分类:
编程语言 时间:
2015-01-15 21:56:22
阅读次数:
247
一句命令快速合并 JS、CSS 在项目开发环境下,我们会把 JS代码尽可能模块化,方便管理和修改,这就避免不了会出现一个项目自身 JS 文件数量达到 10 个或者更多。 而项目上线后,会要求将所有 JS 文件合并为 1 个或者几个,手动的操作虽然也不是问题,但每次修改更新都要手动操作合并一遍,这.....
分类:
Web程序 时间:
2014-09-18 23:37:04
阅读次数:
244
在计算机科学中,二项堆(Binomial Heap)是一种堆结构。与二叉堆(Binary Heap)相比,其优势是可以快速合并两个堆,因此它属于可合并堆(Mergeable Heap)数据结构的一种。
分类:
其他好文 时间:
2014-09-17 23:01:42
阅读次数:
459
实现不相交集合数据结构的几种方式:
单纯的快速查找:
若id相同则在一个集合中,下图中,( 2, 3, 4, 9 )为一集合, 3 和 6 不在一个集合中
合并集合时,需逐个比较将两个集合的 id 统一,慢
缺陷:
合并慢
==================================================
2.单纯的快速合并:...
分类:
其他好文 时间:
2014-06-07 12:47:33
阅读次数:
266
本节介绍的是快速合并的优化算法。基本思想就是在每个节点上增加重量的概念,每次操作的时候将重量小的部件挂在重量大的部件之下。这样就避免了树形结构太高的问题。
下图展示了优化前后的树形结构深度的对比。
证明
可以证明每个节点的深度最大为lgN。
因为每次合并的时候较小的部件要放在较大的部件之下,所以如果要增...
分类:
其他好文 时间:
2014-06-02 19:00:51
阅读次数:
334
本节讲的是并查集的另外一种实现方法。这种方法的合并操作开销很小,但是查找操作开销很大。
数据结构
这种算法的数据结构和快速查找方法的数据结构是一样的,也是N个整数组成的数组。
数组中每个元素id[i]的含义是指i的上级是id[i]。
根节点
一个节点的根节点就是id[id[id[...id[i]....]]],一直循...
分类:
其他好文 时间:
2014-06-01 14:52:52
阅读次数:
225
冒泡排序
思路:就是每次将最大或最小的元素放到数组的最后,so easy!时间复杂度为(O(n^2))
public class BubbleSort {
public static void bubbleSort(int[] a) {
for (int j = 1; j < a.length; j++) {
for (int i = 0; i < a.length - j; i+...
分类:
编程语言 时间:
2014-04-30 22:12:40
阅读次数:
309