当前位置: 首页 > news >正文

带权并查集,扩展域并查集

带权并查集

本质上就是并查集树上的边有了边权,进而可以用一个 \(dist\) 数组来表示每个点与其所在集合的祖先之间的关系

  • 合并:在任意两个点有了新的关系后,可以通过直接合并二者所在集合的祖先来构建二者之间的关系;
  • 查询:查询同一集合内任意两点之间的关系也可以通过二者和祖先之间的关系推导出来;不同集合内的两个点是没有任何关系的
  • 在查询每个点的祖先(find)过程中,边做路径压缩,边合并 dist 的信息

可以用来解决 维护并查集每个集合内任意两点之间信息 的问题。

模板:

// 带权并查集
int fa[100002], siz[100002];
int dist[100002];
void init(int n){for(int i = 1; i <= n; i ++){fa[i] = i;dist[i] = 0;siz[i] = 1;}
}
int find(int x){ // 路径压缩的同时,合并dist的信息if(x != fa[x]){int tmp = fa[x];fa[x] = find(tmp);dist[x] += dist[tmp];}return fa[x];
}
bool union_(int l, int r, int k){ // 设置 l 到 r 在一维数轴上的距离为 vint lf = find(l), rf = find(r);if(lf != rf){ // 只有二者不在同一个集合中才能合并fa[lf] = rf;siz[rf] += siz[lf];siz[lf] = 0;dist[lf] = dist[r] - dist[l] + k;return true; }return false;
}
int query(int u, int v){ // 查询 u 与 v 之间的相对距离(只有u, v在同一集合中才有解)if(find(u) != find(v)) return INF;return dist[u] - dist[v];
}

扩展域并查集

本质上就是好几个并查集,其中每个并查集用于表示某个种类。一个个体可以是这几个种类中的某一种,而种类之间可能存在着一些关系;而题目并不给出这些个体是哪个种类,而会给出每一对个体之间的关系。这时就可以通过枚举这两个个体可能的所有种类的情况,并将其合并起来。

举个例子:有 3 种动物种类 \(A,B,C\),三者形成一种循环食物链:A 吃 B,B 吃 C,C 吃 A。

则我们需要对于每个种类均初始化一个并查集,而不同并查集内的个体是需要参与合并的。

现在有两个动物 x, y, 规定 x 吃 y,那么,我们需要做:

  • A 中的 x 与 B 中的 y 合并
  • B 中的 x 与 C 中的 y 合并
  • C 中的 x 与 A 中的 y 合并

而若想查询 z 是否吃 w,或者检验某个规定是否与之前的规定产生矛盾,就可以直接利用上面维护的扩展域并查集来检查。更详细的可以看这篇博客:blog

http://www.jsqmd.com/news/309621/

相关文章:

  • 华为2288H V3 安装英伟达3090显卡
  • JNPF 全局设置实操,教你 3 步定位 + 解锁核心功能
  • 完整教程:有没有像OneDrive一样的自动同步网盘?
  • FastAPI系列(15):Jinja2模板语法之控制结构
  • Cisco 350-601 認證介紹|CCNP Data Center 核心考試解析
  • 运维系列【亲测有效】:Linux 系统根分区满了怎么办(根分区不是lvm不可以直接扩充的前提下)
  • 运维系列【亲测有效】:Ubuntu18.04手动编译安装nginx
  • 曜华硬核出征!三台核心光伏检测设备启运,力擎行业品质标杆
  • HELLY HANSEN携手香港游艇会扬帆启航 承百年航海精神,启东方航道新程
  • 如何在Android设备上删除多个联系人(3种方法)
  • 如何在没有iTunes的情况下将照片从iPad 传输到PC
  • 做电商商品卖点提炼工具,输入商品详情,自动提取核心卖点(功能/材质/性价比),生成适配电商详情页的卖点文案,分点展示更清晰。
  • 一个视频了解什么是Peforce JRebel?为何能让你告别Java开发的“时间黑洞”?
  • 学习记录260127
  • 从一道面试题看算法思维:最小栈(Min Stack)的从 O(N) 到 O(1) 进化之路
  • 史上最强Java八股文面试题,持续更新
  • Coze搭建工作流(爆款视频、调研报告、海报生成等实操)-精讲版
  • 别只盯着 LangChain!带你起底 LangGraph 和 DeepAgents:Agent 真正落地生产环境的必经之路
  • 伦敦银飙破110美元:库存危机与工业需求的合力
  • 数据共享的五大核心技术,大数据工程师必看!
  • 『NAS』在群晖部署一个搜片神器-aipan
  • 『n8n』读写本地文件
  • Edge SCDN是如何实现智能 WAF 防护的?
  • 揭秘Agentic AI+区块链的核心痛点:提示工程架构师如何用Prompt设计破解数据孤岛?
  • ​​​​​​​通过西门子平台 API 接口高效获取 XMZ 详情数据
  • 实测拆解:Qwen3-Max-Thinking 到底能不能对标 GPT-5.2?
  • MyBatis-Plus核心组件解析:BaseMapper与IService的区别、优劣及用法
  • 省选集训 22 - 数据结构
  • Class1-100洁净环境下,能传输翘曲晶圆的搬运机械手怎么选?
  • 步进控制的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2快速入门:二维螺距补偿(上)