对于并查集: 很多次都是迷迷糊糊,尤其是对并查集的优化:
1.路径压缩 2.按秩合并
对此个人整理了一下:
对于最基本的并查集建议看看:
百度百科: http://baike.baidu.com/view/521705.htm
以例题的形式分析,并用算法描述了
博客园: 对于有点基础的可以参考下,清晰明了
http://www.cnblogs.com/cherish_yimi/archive/2009/10/11/1580839.html
对于第二个优化按秩合并的部分处理有点异议:
if(rank[x] < rank[y])
{
num[x]=y;
}
else if(rank[x]> rank[y])
{
num[y]=x;
}
else rank[y]++;
看到很多博客上都是这么写的,就连维基百科上也是这么处理的!
个人感觉这样会大大使按秩合并的优化打折,这样处理应该比上面的哪个要严谨多了
if(rank[x] <= rank[y])
{
num[x]=y;
rank[y]+=rank[x];
}
else if(rank[x]> rank[y])
{
num[y]=x;
rank[x]+=rank[y];
}
而在sdutoj 2391测试 时间只是略快
分享到:
相关推荐
* pm^{km},其中pi是不同的素数,ki是非零正整数。根据积性函数的性质,可以得到欧拉函数的通解: φ(n) = n * (1 - 1/p1) * (1 - 1/p2) * ... * (1 - 1/pm) 2.3 求解欧拉函数 2.3.1 欧拉筛 欧拉筛是一种线性时间...
这是matlab的一些算法的例程,方便各位matlab新手入门学习
7. **二分图**:二分图问题通常与匹配算法相关,例如1325、1469、2195(KM算法或最小费用最大流)和2446、1422、2594。 8. **并查集**:用于处理集合合并和查询问题,推荐1861、1182和1308、2524等题目。 9. **...
主要方法包括匈牙利算法和KM算法。 **1.11.1 匈牙利算法** - 匈牙利算法是一种高效的解决二分图最大匹配问题的算法。它通过逐步构建增广路径来找到最大匹配。 **1.11.2 KM 算法** - KM 算法也是一种用于解决二分...
【acm经典代码】是为算法入门者设计的一系列编程实践资源,主要涵盖了数论和图论两大领域的经典算法。这些算法在国际大学生程序设计竞赛(ACM/ICPC)中常常出现,对于提升参赛者的算法能力和解题技巧至关重要。 一...
KM算法是解决赋权二分图最大匹配问题的一种高级算法,特别适合于边的权重各不相同的情况。 #### 17. 流网络算法 包括Ford-Fulkerson算法和Push-Relabel算法,用于求解最大流问题,如在有容量限制的网络中寻找最大...
11. **图 (3), 1325, 1469, 2195 (KM算法)**:这里提到了图论中的一些经典问题及解决方案,如匹配问题等。 12. **2446, 1422 and 2594, ڰ鼯 (2)**:这些题目可能涉及到一些高级数据结构的应用。 13. **1861, 1182...
PPT可能会讲解二分匹配的Kuhn-Munkres算法(KM算法)或匈牙利算法。 2. **搜索入门**:搜索算法包括深度优先搜索(DFS)和广度优先搜索(BFS),是解决图和树结构问题的基础。这部分可能涉及搜索的基本原理、剪枝...
- **2195** 和 **2446** 这两道题目则涉及到了 KM 算法或最小费用最大流等更高级的主题,适合那些想要挑战更高难度的学习者。 ### 第八类:并查集 #### 重要性: 并查集是一种数据结构,它可以帮助我们高效地处理...
printf("车辆的速度为:%.2f km/h\n", (double)(i - 95859) / 2.0); break; } } return 0; } ``` #### 代码解读 1. **变量声明**: - `int t, a[5];`:t用于循环计数,a数组用于存储数字的各个位数。 - `...