浅谈并查集

news/2025/10/6 20:56:06/文章来源:https://www.cnblogs.com/lajishift/p/19127917

带权并查集

Luogu P2024

经典例题食物链。

题意:\(n\) 个动物,可能是三个物种之一,给出若干描述,形如两个动物是同类或是吃与被吃的关系,确定出矛盾的描述。

考虑建图,有边相连代表确定一个确定另一个关系,这是常用技巧。

物种体现在边权上,边权 \(0/1/2\) 表示在三个物种的三元环上,两个点之间要走多少步才能到达。

带权并查集,维护到根的路径上的边权和(模 3 加法群),即可判断描述的合法性。

并查集维护序列连通性

并查集可以维护图的连通性,我们拓展到序列上也是类似的。

并查集维护序列连通性一般是维护形如下一个满足某条件的位置是什么。

例题:Luogu P2391 白雪皑皑

题意是对序列进行若干次染色,求每个位置最后的颜色。

染色问题有技巧反着考虑,直接得到最终状态。

那么转换为,要快速找到每个位置下一个没有染色的位置,这符合并查集维护序列连通性的基本要求。

我们更改并查集 \(fa_i\) 的定义为上述所求。

倒序枚举询问,从前往后跳,每次将跳到的位置标记颜色,并更新当前的 \(fa_i \leftarrow fa_{i + 1}\),意义为当前位置染色完了,从下一个位置的答案更新。

注意到每个位置只会被跳一次,那么复杂度即为 \(O(n \alpha(n))\)

其实我们相当于维护每个位置下一个没有染色的位置相当于维护了一个链表,更新也符合链表的操作,区别仅仅体现为路径压缩加快查询链表尾端。

可撤销并查集

并查集不能快速分裂,只能快速撤销。

可撤销并查集不能路径压缩,因为我们在路径压缩时实际上是损失了树的结构的信息,于是我们用按秩合并加快并查集速度。

用一个栈维护操作序,每次撤销就弹出栈顶并更新成原来的值。

可撤销并查集一般应用于类似线段树分治、操作分块等按时间轴分治的一些数据结构(与图相关的)

代码

没有什么并查集裸题,贴个可撤销带权并查集(来自线段树分治板子)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SP6950 CTOI10D3 - A HUGE TOWER 题解

按照 $ h $ 降序依次放每个积木,此时如果有 \(2\) 块积木,那么一定满足条件。因为 \(h_{\text{now}} - h_{\text{pre}} \leq 0 \leq D\)。 继续往下想,再加一块,也要满足 $ h_{\text{next}} - h_{\text{now}} \le…

如何免费搭建网站wordpress安装完怎么恢复数据

引用 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

Kubernetes 定时备份etcd数据

Kubernetes 定时备份etcd数据Posted on 2025-10-06 20:54 清欢也野 阅读(0) 评论(0) 收藏 举报个人笔记、与各位的环境不同、自行修改 编写dockfile镜像 1、首先我利用的是k8s自带的基础容器镜像 [root@qinghuany…

蒲县网站建设长沙中小企业做网站

1.简介 1.1单例模式 C单例模式被广泛应用于需要全局唯一实例的场景。以下是一些常见的使用场景: 日志记录器 在大多数应用程序中,需要一个全局的日志记录器来记录系统运行时的事件和错误。使用单例模式可以确保只有一个日志记录器实例,并能…

16_AiAgentMCP简单教程

ai mcp AI Agent与MCP简单教程:从入门到实践 总起:开启AI Agent与MCP之旅 什么是AI Agent? AI Agent(人工智能代理)是能够自主感知环境、做出决策并执行行动的智能实体。与传统的被动式AI不同,AI Agent具有主动性…

17_AiAgentMCP实现技术选型

ai mcp AI Agent与MCP实现技术选型:全面指南与最佳实践 总起:技术选型的重要性与挑战 为什么MCP技术选型至关重要? 在AI Agent快速发展的时代,Model Context Protocol(MCP)作为连接AI模型与外部资源的关键桥梁,…

谷歌chrome浏览器优化网络搜索引擎

def 将一个列表中的几个字典改成二维列表(original_list,headersToRemove_list):# 初始化一个列表用于存储遇到的键,保持顺序ordered_keys []# 遍历data中的每个字典,添加其键到ordered_keys,如果该键还未被添加for d in original_list:for …

JVM_XMS 和 java_opts哪种写法对?如何在JVM中设置JVM_XMS和java_opts?

JVM_XMS 和 java_opts哪种写法对? JVM_XMS与JAVA_OPTS是两种不同的JVM参数设置方式,具体写法需根据使用场景选择: JVM_XMS(初始堆大小)‌写法‌::ml-search-more[-Xms]{text="-Xms"}(如-Xms512m) ‌…

百度网盘做存储网站上海百度搜索优化

我一直在探索PPT中平滑切换的应用。这篇文章感觉算是探索到头了。之前的文章中,曾经提到过平滑切换可以让3D模型动起来。但是在实际应用中,能够供PPT使用的3D素材数量有限,难以准确契合我们的需求。后来我发现,只需要1张普通图片&…

鸿蒙编译ffmpeg库 - 详解

鸿蒙编译ffmpeg库 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

网站描述怎么设置网站上线后的工作

解决方法就是: from django.urls import reverse 最近从django1.9迁移到django2.0中出现一个意外的报错: 这个报错的原因在stack overflow上有很直接的解释,但是百度上并没有直接的答案。 简单来说,原因就是:django2.0 把原来…

宁乡县住房和城乡建设局网站扒网站样式

来源:《科学哲学的历史导论》、思庐哲学(siluphilosophy)作者:约翰洛西对正统学说的诸多批评有一种累积的效果。许多科学哲学家渐渐认为,用形式逻辑范畴来重建科学时会失去一些至关重要的东西。在他们看来,…

知道却做不到

这种“知道步骤但写不出来”的情况非常常见,核心原因是对“类的参数设计”和“类之间的协作关系”还没有形成清晰的逻辑链。其实参数设计有明确的规律——每个类的参数都应该服务于它的“核心职责”。我们用“从职责倒…

题解:loj154 集合划分计数

题意:给出一个大小为 \(n\) 的全集 \(A = \{1,2,\cdots n\}\),再给出 \(m\) 个集 \(S_1,S_2\cdots S_m\),要求从这些集里选出至多 \(k\) 个,满足 \(S\) 间没有交集且并集是全集,\(k\le n\le 21,m\le 262144\)。 做…

网址大全下载app鄂州网站seo

目录 smbclient工具 mimikatz工具 Kerbers协议 NTLM认证 hash传递攻击(PTH攻击) 黄金票据攻击 白银票据 MS14-068 smbclient工具 在linux里面连接远程windows共享目录,可以使用这个工具 ​ 第一种连接方式:smbclient -L 目…

怎样做网贷网站陕西省建设银行网站

1、典型回答 final、finally、finalize 是 Java 中三个不同的关键字,它们除了长得像之外,其他的(作用和含义)完全不同。 它们三个的区别就好像:雷、雷锋、雷峰塔之间的区别。(是三个完全不同的东西&#…

博客网站主页代码html介绍在家里做的点心的网站

经过一些自己的混淆,最终博客方法的具体含义(最终声明的方法参数)将对此博客条目进行澄清。 至少可以将方法参数上的final关键字视为Java编译器的指示符,表明该参数不能重新分配给另一个引用。 Java参数处理始终是“按值调用” &a…

电商网站建设培训wordpress的用法

文章目录 问题引入 1:问题阐述 2:问题分析 一:从SpringBoot的自动装配 1:SpringBootApplication介绍 2:自动装配的核心方法 3:核心方法的调用路径 4:SpringSecurity核心配置 5&#xf…

详细介绍:003 flutter初始文件讲解(2)

详细介绍:003 flutter初始文件讲解(2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

为什么 Java 中打印Object类型的变量无需强转,而从Object类型的数组中取元素却要强转?

两个奇怪的现象 case1:打印Object对象时,无需强转: Object val = 25; System.out.println(val); // 直接打印,输出:25 // 不需要:(String)val 或 (Integer)valcase2:当我们要使用Object 数组中的元素时,需要强…