并查集的路径压缩上的一些操作

数据结构之并查集:按秩合并与路径压缩优化 并查集 1.并查集描述 一些有NNN个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。 为了快速解决这些问题,便有了并查集的概念。 并查集维护了一个不相交的动态集的集合S1,S2,⋯ ,Sn{S_1,S_2,\cdots,S_n}S1​,S2​,⋯,Sn​,每个集合将有一个"首领"来标识该集... 阅读详情

题意

如果Y不在X所在的对立里的话,将Y所在的队列插入到X所在的队列后面,并询问某个人后面有多少人。

题解

使用并查集,将一个队伍插入到另一个队伍后面,将会改变一个队伍里面某个人后面的人数值,如果暴力修改很耗时间,所以采用并查集的做法,两个队伍合并的时候,将X的队尾连上Y的队头,这时候知道X的后面的人数便是Y里面的人数,那X队伍里面的人呢?这时候就用到了并查集路径压缩的过程。
在这里插入图片描述
在路径压缩的过程中,首先先记录下此时的pre[x],例如要压缩3的路径,pre[x] = find(pre[x]),压缩后pre[3] = 1,但是压缩的过程是会经过2的,首先在pre[x] = find(pre[x])之前记录下当前的pre[x] = 2,当pre[x] = find(pre[x])结束后,2结点的值已经被1结点更新了,所以这时可以将2结点的信息再更新到3上面。

ans[i]: i后面有多少人, num[i]: i所在的队列有多少人

    int fx = find(x), fy = find(y);
    if(fx != fy) {
        pre[fx] = fy;
        ans[fx] = num[fy];
        num[fy] += num[fx];
    }
int find(int x) {
    if(x == pre[x])
        return x;
    int tmp = pre[x];
    pre[x] = find(pre[x]);
    ans[x] += ans[tmp];
    return pre[x];
}
使用运放构建电压跟随器 运放,是运算放大器的简称 运算放大器是用模拟电子器件(如晶体管,场效应管,二极管等)构成的模拟集成电路,其特点是有很高的放大倍数和抗干扰能力,因此可以被设计成各种用途的派生电路,如电压比较器、窗口电路、波形发生电路等等,其中也有电压跟随器。 电压跟随器是一种具有100%电压负反馈的放大器电路,其特点是输出电压的幅度和极性都与输入电压相同,所以叫跟随器。典型线路如图所示: 运放跟随器有输入阻抗高,而输出阻抗低的特性,一般来说,输入阻抗可以达到几兆欧姆,而输出阻抗低,通常只有几欧姆,甚至更低。 在电 阅读详情

相关推荐

U盘重装Win10系统

准备工作 准备一个8G或8G以上U盘(32G以内) 请备份好u盘里的资料,在制作过程中会格式化硬盘 请备份好要安装系统的盘的资料,安装时也会对该盘内容进行格式化。 将u盘插入电脑usb接口中,尽可能的插入usb3.0的接口,这样下载和安装速度会更快。 1.到微软官网下载安装包 浏览器输入:微软官网下载win10 懒人请复制粘贴:https://www.microsoft.com/zh-cn/software-download/windows10 ​ 打开之后的界面: 2.下载Media Creat.

Cici$的博客 2115

并查集+路径压缩

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。 并查集两个操作“并”和“查”:并:将两个集合合并查:询问两个数是否在一个集合中 (1)初始化。定义数组int s[]是以结点i为元素的并查集,开始的时候,还没有处理点与点之间的朋友关系,所以每个点属于独立的集,并且以元素i的值表示它的集s[i],例如元素1的集s[1]=1。   下面是图解,左边给出了元素与集合的值,右边画出了逻辑关系。为了.

qq_52200998的博客 3520

3台虚拟机部署Doris详细文档(含校验步骤)

摘要:本文详细介绍了Apache Doris在3台虚拟机上的集群部署方案。采用1主FE+1从FE+1观察者FE+3BE的混合部署模式,确保元数据高可用性。硬件配置建议测试环境4核16GB内存,生产环境8核64GB内存。部署步骤包括系统环境配置(关闭防火墙、内核参数优化)、FE/BE节点配置启动、集群初始化验证等。重点配置了IP白名单(172.30.0.115)和数据目录(/data/doris)。通过MySQL客户端和WebUI可监控集群状态,实现千万级数据的实时分析能力,后续可通过增加BE节点线性扩展。

weixin_41026747的博客 932

【数据结构】并查集(路径压缩)

并查集

The porters of knowledge 2643

ENVI中Landsat8大气校正法实现地表温度精准反演

本文详细介绍了在ENVI软件中,利用大气校正法对Landsat8热红外数据进行地表温度反演的完整流程。该方法通过辐射定标、大气参数获取、发射率估算及温度转换四个核心步骤,精准剔除大气干扰,还原地表真实温度,是城市热岛效应监测、农业旱情分析等应用的关键技术。

weixin_29292535的博客 150

Dify沙盒容器部署实战:解决config.yaml缺失与系统调用权限问题

本文详细解析了Dify沙盒容器部署中的两大常见问题:config.yaml缺失与系统调用权限限制。通过实战步骤指导如何正确配置卷挂载解决`no such file or directory`错误,并深入讲解如何调整`allowed_syscalls`白名单应对`error: operation not permitted`权限问题,帮助开发者高效完成Dify容器化部署。

gg901的博客 921

并查集最重要的优化:路径压缩

路径压缩其实就是把一条线上的所有点的祖先尽可能的往上,依次来减少搜索的次数。此时已知祖先了,接下来就是把这条线上所有的节点的父节点都变成此时的x。如果我们直接find(a),就起不到把过程中的所有父节点都统计的作用了。因为我们优化的是find函数,所以我们先写一个find2。这样的路径压缩就会把时间复杂度从O(n)直线编程O(1)今天我们要来说另一种对并查集的优化:路径压缩。这样的话,共搜索次数为3次了,大大减少了时间。如果用我们刚才说的路径压缩的思想呢?这样,寻找c的搜索次数便可将至1次。

lsy201009的博客 2094

【可不卸载重装】VS2019新建项目里没有CUDA选项

问题:VS2019 新建项目里没有CUDA选项,vs也属性没有cuda。这是因为你在Visual Studio 2019安装之前,先安装了CUDA Toolkit。

qq_62844901的博客 1319

并查集路径压缩(C++)

一、并查集:查找元素互相关联的集合 Keep Learning 34days; 合并:合并两个集合 查找:判断两个元素是否在一个集合 1、利用数组 father[] int father[N]; //表示元素i的最高父亲节点(根节点) 如果father[i] = i,说明i是其集合的 根节点(最高点) 2、开始每一个元素都是自己单独一个集合,令father[i] = i; for(int i = 0;i <= n;i++) father[i] = i; 3、查找:由于每个集合只能有一个根

Kyrie_irving_kun的博客 2553

具身智能与空天具身智能:从理论到实践的跨领域融合

本文深入探讨了具身智能从理论到实践的发展,重点分析了空天具身智能这一前沿领域。文章阐述了如何为AI赋予“身体”,使其通过与环境实时交互进化智能,并详细拆解了构建空天智能体所需的核心技术模块,包括多模态感知、基于大模型的决策规划以及鲁棒控制。同时,结合山区电力线自主巡检等实战案例,展望了多智能体协同与标准化等未来方向。

weixin_29045585的博客 532

前端使用二开Thingsboard一、二、三事(三)-规则链

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 863

数据结构 - 并查集路径压缩

并查集是一种用于管理一组不相交集合的数据结构,常用于解决连通性问题。在并查集中,路径压缩是一种重要的优化技术,它能够显著提高查找操作的效率。本文将深入探讨并查集路径压缩的基本原理,并通过具体的Java代码详细说明如何实现高效的路径压缩。

菜鸟小码的博客 1739

[密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)(二十四)

本系统将密码学理论与软件工程实践相结合,为密评备考提供了高效解决方案。随着《密码法》的深入实施,掌握密评知识将成为信息安全从业者的核心竞争力。立即开始您的密码安全专家之旅!(注:实际应用请以最新发布版本为准)

曼岛_的博客 797

并查集的基本操作,Find的路径压缩,Union的按秩合并

并查集的基本操作

sl824200的博客 878

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

并查集:基本操作、路径压缩

并查集基本知识

最不正经的计算机专业学生 726

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

并查集及其路径压缩浅析

并查集(一种技巧) 实用的树形数据结构 主要处理不相交集合的查询与合并 选出集合中的某个元素为代表,集合中具体包含哪些元素不重要 将如下一系列操作复杂度降到常数级: 对于给定的元素,可以很快找到该元素所在集合 可以很快合并两个元素所在集合 用树根当一系列数字的代表 初始化函数的目的是使每个元素都是以自身为代表 表示: 不交集森林把每一个集合以一棵树表示,每一个节点即是一个元素。节点保存着到它的父节点的引用,树的根节点则保存一个空引用或者到自身的引用或者其他无效值,以表示自身为根节点。这个数据结构最

lin3ux的博客 1520

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

算法基础--并查集(含路径压缩,按秩合并,删除操作)

并查集 定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并 作用 维护一个无向图的连通性,判断n个点m条边时最少加多少边可以连通所有点 判断在一个无向图中,两点间加边是否会产生环(最小生成树克鲁斯卡尔中有用到) 维护集合等操作 等...

weixin_43565960的博客 1320

并查集概念以及常见操作(合并、查找、路径压缩)————附带完整代码和示例

1 并查集 1.1 定义:一种维护集合的数据结构,Union(合并),Find(查找),Set(集合)。 1.2 操作: 合并:合并两个集合; 查找:判断两个元素是否为在一个集合 1.3 性质 并查集产生的每一个集合都是一棵树 2 操作 2.1 初始化 //初始化 void Init(int father[], int n){ for (int i = 0; i <= n; ...

韩江雪de 小屋 1182

并查集算法(二):路径压缩

《并查集路径压缩技术的Java实现与性能分析》 本文详细介绍了并查集数据结构及其路径压缩优化技术。并查集用于处理集合合并与查询问题,核心操作包括查找(find)和合并(union)。路径压缩通过在查找过程中将节点直接连接至根节点,有效降低树高,使时间复杂度从O(n)优化至近常数级。文章提供了完整的Java实现代码,包含按秩合并和路径压缩策略,并通过连通性测试验证其正确性。性能对比表明,路径压缩能显著提升查询效率,适合处理大规模数据集。通过理论与代码结合的方式,清晰展示了并查集的优化原理与实践价值。

一碗黄焖鸡三碗米饭的博客 1093

并查集路径压缩

路径压缩是并查集的一种优化技术,通过在查找操作中将路径上的节点直接连接到根节点,显著降低树的高度,使后续操作效率接近常数时间。研究表明,结合按秩合并后,平均时间复杂度可达O(α(n))。路径压缩特别适用于频繁查询场景,如Kruskal算法中的连通性检测,但在持久化并查集等特殊场景可能需要权衡。实现上只需在find函数中添加递归赋值即可完成优化。

m0_57545130的博客 977

hdu 5441 Travel(离线操作+并查集路径压缩)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5441 解题思路: 题目大意: 给你n个顶点,m条边的一个无向图,q个询问。对于每个询问x,将图中所有小于x的边拿出里啊,组成另外一个图,将一个点a到能 到另一个点b记为有序对, 然后让你找出这个图里面有多少个这样的有序对。 算法思想: 当时比赛的时候思维短路了。。。这题肯定是先将所

piaocoder 600

并查集以及路径压缩

并查集以及路径压缩 一、概念 并查集是一种树型的数据结构,他的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。他有两个操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。这个确定方法就是不断向上查找找到它的根节点,它可以被用来确定两个元素是否属于同一子集。 二、操作 每一个集合用一棵树来表示。树根的编号就是整个集合的编号。每个节点存储它的父节点, paren

lizefeng1998的博客 1422

蓝桥杯必会知识点——并查集

本文系统讲解了并查集数据结构及其应用。从基础概念出发,详细说明并查集的初始化、查找(含路径压缩优化)和合并(含按秩合并优化)三大核心操作,提供完整Python实现模板(时间复杂度O(α(n)))。通过蓝桥杯典型例题(如求连通分量、最小连通集、可撤销操作等)演示实际应用,并给出扩展题目推荐。特别强调在普通场景使用路径压缩,而可撤销操作需保留原始结构。文章兼顾理论解析与代码实践,适合算法竞赛备考学习。

2302_78972332的博客 1007

并查集——路径压缩

关于Rank的优化 上文中我们已经对代码进行了几次优化,使得进行连接操作的时候,所形成的数长度尽量短,但同时也存在另一种情况:集合元素多,但是每个元素分别指向根节点,这样就只有两层(举例),那么就应该把这棵树的根节点指向另一棵树的根节点,就出现了所谓的“集合元素多,但是树长度短“的情况,因此,应当首先考虑树的长度,而非树的元素量。

draper__QYT的博客 865

算法与数据结构——并查集、种类并查集和带权并查集

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。

qq_56639722的博客 3074

数据结构--并查集的进一步优化

压缩路径−−Find操作,先找到根节点,再将查找路径上所有结点都挂到根结点下每次Find操作,先找根,再“压缩路径”,可使树的高度不超过Oαn))。αn是一个增长很缓慢的函数,对于常见的n值,通常αn≤4,因此优化后并查集的Find、Union操作时间开销都很低。

m0_60593173的博客 751
上一篇: P1052 过河(状态压缩dp)
下一篇: CCF 地铁修建(起点到终点的路径中最大边最小)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值