
并查集
文章平均质量分 63
oj
Ypuyu
Ypuyu
展开
-
[并查集+模板] 裸并查集模板
文章目录0. 前言1. 最裸并查集0. 前言并查集支持的最基本操作:将两个集合合并询问两个元素是否在一个集合当中并查集优化的两个操作:路径压缩:当寻找一个元素的树根节点时,一旦找到,就将这条路径下的所有节点的父节点全部修改为树根节点,优化后几乎实现了接近 O(1) 的时间复杂度查找。按秩合并:一个不重要的优化操作,很少用到,主要是在合并的时候,将树高度较低的集合插到树高度教高的集合中(貌似是这样,没过多了解,没实现过)板子实现了路径压缩,就一行代码,递归寻找,回溯的时候就能实现路径压原创 2020-10-22 14:17:33 · 215 阅读 · 0 评论 -
[并查集] 连通块中点的数量(模板+维护集合元素个数)
文章目录1. 并查集+动态维护集合个数1. 并查集+动态维护集合个数可以在并查集的基本操作中维护一些额外信息,如维护集合中的点的个数。新添加一个数组 s[N] 只维护一个集合的树根节点位置的信息,在 s[find(x)] 存储这个集合的元素个数。注意:初始化数组 s 为 1,意味着集合中只有它自身一个元素合并两个集合的时候,更新 s 数组,就是简单的加和当两个元素已经在一个集合中的时候,不能再对 s 进行操作,这相当于集合元素个数的翻倍。代码:#include <iostrea原创 2020-10-22 12:01:49 · 439 阅读 · 0 评论 -
[H并查集] lc3235. 判断矩形的两个角落是否可达(并查集+高质量+周赛408_4)
十分不错的题目哈,关键是题意的转换。将每个圆视作一个集合,且将 上边、左边 视作一个集合,右边、下边 视作一个集合。当 上边、左边,与 右边、下边 所处同一集合的话,那么认为此时已经被封锁,已经无法到达。原创 2024-07-29 00:23:20 · 508 阅读 · 0 评论 -
[图论] aw3579. 数字移动(图论+并查集+置换群+dfs+aw周赛001_3)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3579. 数字移动2. 题目解析置换群问题,隶属于群论、图论知识点,在这可以使用并查集偷鸡。给出一个置换序列,一次操作就是按照这个序列置换一次。按题建图,将 i 作为出点,pi 作为入点,连一条边,则整个图会由几个简单环构成。每个点回到原来位置的置换次数就和所在环中的边长度一样,也就和环中的点的个数一样。可将环看为连通块,并查集维护连通块再维护连通块中点的数量就能偷鸡了。也可以暴搜求环长,参考抽风的题解。图解如下:时间复杂度原创 2021-05-29 22:50:41 · 179 阅读 · 0 评论 -
[并查集] lg-P1536. 村村通(并查集+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:P1536 村村通2. 题目解析并查集模板题,维护连通块,连通块个数减一即为需要建设的道路个数。代码:// https://www.luogu.com.cn/problem/P1536#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;con原创 2021-05-14 10:23:27 · 138 阅读 · 0 评论 -
[M并查集] lc1722. 执行交换操作后的最小汉明距离(并查集+哈希+周赛223_3)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:1722. 执行交换操作后的最小汉明距离2. 题目解析并查集维护连通块即可,在考场上并没有考虑的很完备,猜了猜思路就写了。当为树形连通的时候,得从入度为 1 的点进行考虑,然后见该点删除,考虑下一个入度为 1 的点。时间复杂度:O(n)O(n)O(n)。空间复杂度:O(n)O(n)O(n)代码:class Solution {public: vector<int> p; int find(int原创 2021-01-16 22:05:13 · 243 阅读 · 0 评论 -
[H并查集] lc1851. 包含每个查询的最小区间(并查集+离散化+周赛239_4)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:1851. 包含每个查询的最小区间前导题:[并查集] aw3115. 疯狂的馒头(经典并查集+离线询问+离线算法+模板)2. 题目解析本次周赛的 2 3 4 题质量都相当高。本次第四题方法很多,线段树、树状数组、multiset、并查集等都可以做。采用并查集解法,一定先去掌握前导题 前导题:[并查集] aw3115. 疯狂的馒头(经典并查集+离线询问+离线算法+模板),这是一个非常经典的并查集模型,必须掌握。注意:摘自,加了一点自己原创 2021-05-07 23:32:05 · 298 阅读 · 0 评论 -
[并查集] aw3115. 疯狂的馒头(经典并查集+离线询问+离线算法+模板)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3115. 疯狂的馒头2. 题目解析很经典的一道并查集的应用题目,在很多地方考过,由于 lc 周赛遇到了变种题,在此总结并学习这个经典模板。维护所有的馒头为并查集,初始每个馒头的边均指向自己。由于后染色可以将前染色覆盖掉,所以直接从后往前针对区间开始染色即可,染过的不必再染,没染的染完就确定了它的颜色,故每个点只会被染色一次。这点也是离线询问,离线算法。并查集的根,即 find(i),操作为找到 i 右边第一个未被染色的点。当染色 [l,原创 2021-05-07 18:43:21 · 416 阅读 · 0 评论 -
[边带权并查集] 食物链(经典+维护到根的距离)
文章目录1. 并查集+维护到根的距离1. 并查集+维护到根的距离Biu并查集,多维护一个数组 d 记录当前节点到父节点的距离,初始化为 0,即自己到自己的距离为 0。当前节点到所处集合的 root 节点距离在模 3 意义下只会出现三种情况:0,1,2,我们将这三种情况分别指代为与 root 节点为 同类、吃根节点、被根节点吃。路径压缩:递归找到当前点的 root 节点,这一步递归操作并查集都一样,但是需要注意,递归下去如果不对 p[x] 进行记录,那么在后面更新 d[x] 的时候就全是 root原创 2020-10-23 18:27:01 · 612 阅读 · 0 评论