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

写在前面

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

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

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

课程刷题点
Virtual Judge

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

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

并查集

解决方法:

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

概念

在这里插入图片描述

实现

  1. 数组实现

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

优化

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

变种

在这里插入图片描述

在这里插入图片描述

最小生成树

在这里插入图片描述

kruskal算法

在这里插入图片描述

在这里插入图片描述

实现

在这里插入图片描述

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

prim算法

在这里插入图片描述

用的不多。和Dijkstra有点像。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值