算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记

写在前面

好久没更新公众号和博客了,因为最近在研究新的方向,所以很少发文。
笔者接触编程只有一年,这一年间主要研究启发式算法在运筹学中的应用。但是由于编程基础薄弱,在进一步研究复杂运筹学问题时发现基础算法不过关导致写出的代码运行速度很慢,因此很苦恼。所以决定这个暑假补习一下基础算法,主要是刷一些简单的ACM入门题。偶尔会发一些刷题笔记(偶尔!)。和作者有类似目标的同学可以一起交流共勉!

目前在看的教程:
北京理工大学ACM冬季培训课程

算法竞赛入门经典/刘汝佳编著.-2版可以在这里下载->github

课程刷题点
Virtual Judge

刷题代码都会放在github上,欢迎一起学习进步!

因为很多原因,北理的课程我打算暂时刷到这里,今天会做最后一期笔记。ACM的相关内容如果继续刷,主要会看紫书。或许以后会刷下力扣。暑假这三个多星期左右的训练让我感受颇多,对ACM和算法了解了更多。期待下一次的刷题特训。

并查集

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第1张图片

解决方法:

  1. 图染色,合并复杂度高,查询O(1);
  2. 并查集;

概念

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第2张图片

实现

  1. 数组实现

建立标记数组father,用father[]表示元素i所属集合(头目)的标记。

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第3张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第4张图片

看到这里突然感觉和Dijkstra记录路径的方法类似

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第5张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第6张图片

优化

对整体数据结构的优化,在find函数中优化。

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第7张图片

树状结构可能变成线状结构。

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第8张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第9张图片

一般写递归即可。复杂度log级。

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第10张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第11张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第12张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第13张图片

变种

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第14张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第15张图片

最小生成树

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第16张图片

kruskal算法

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第17张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第18张图片

实现

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第19张图片

使用路径压缩,平均复杂度ElogE

prim算法

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第20张图片

用的不多。和Dijkstra有点像。

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第21张图片

算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记_第22张图片

你可能感兴趣的:(算法入门刷题笔记 Day11-并查集&最小生成树 课题笔记)