扩展域并查集理解性总结

news/2025/10/24 22:24:06/文章来源:https://www.cnblogs.com/Kx-Triumphs/p/19164348

纯文字内容,较短,较枯燥,但感谢你能点进来并完成阅读。

前置:并查集

扩展域并查集(种类并查集)

理解思想

一.团伙

  • 给定若干满足如下两条的关系,求会构成多少个团伙:
    • \(x\)\(y\) 为朋友
    • \(x\)\(y\) 为敌人

  • 普通并查集维护朋友关系依靠的是朋友关系具有传递性,即朋友的朋友还是朋友。但是,敌人的敌人是朋友并不满足上述传递性,因此需要想办法将问题转化为满足传递性。这就是扩展域并查集维护的问题方法。

  • 每个人存在两种关系,将两种关系分为两个集合:
    • 朋友集(\(x\))
    • 敌人集(\(x+n\))

  • 对于每种关系:
    • 如果 \(x\)\(y\) 是朋友,就\(y\) 加入 \(x\) 的朋友集,即操作:
      //将y加入x的朋友集(x)
      add(x,y);
      
    • 如果 \(x\)\(y\) 是敌人,就\(y\) 加入 \(x\) 的敌人集,将 \(x\) 加入 \(y\) 的敌人集,即操作:
      //分别将x,y加入对方的敌人集
      add(x+n,y);//x的敌人集(x+n)
      add(y+n,x);//y的敌人集(y+n)
      

  • 这样实际上利用了:
    敌人的敌人就是朋友这一性质,将无法维护(无法合并)的敌对关系 \(x\)\(y\) ,换成了敌人与敌人间的朋友关系 \(x+n\)\(y\)

二.食物链

  • 给定若干满足如下三条的关系,求有多少条件不合法:
    • \(x\)\(y\) 为同类
    • \(x\)\(y\)
    • \(x\)\(y\)\(y\)\(z\),则有 \(z\)\(x\)

  • 每个人存在三种关系,将三种关系分为三个集合:
    • 同类集(\(x\))
    • 可吃集(\(x+n\))
    • \(x\) 被吃的集(\(x+2n\)),后面简称为被吃集

  • 注意:拥有多种关系时,要进行关系传递。如 \(x\)\(y\) 同类,\(y\) 能吃的 \(x\) 也能吃。

  • 对于两种情况:
    • 如果 \(x\)\(y\) 是同类,就\(y\) 加入 \(x\) 的同类集,将 \(y\) 能吃的加入 \(x\) 的可吃集,将吃 \(y\) 的加入 \(x\) 的被吃集,即操作:
      add(x,y);//将y加入x的同类集(x)
      add(x+n,y+n);//将y可吃的加入x的可吃集(x+n)
      add(x+2*n,y+2*n);//将吃y的加入x的被吃集(x+2n)
      
    • 如果 \(x\)\(y\),就\(y\) 加入 \(x\) 的可吃集,将 \(x\) 加入 \(y\) 的被吃集,将 \(y+n\) 加入 \(x\) 的被吃集(根据关系 \(3\)\(y\)\(z\)\(z\)\(x\)),即操作:
      add(x+n,y);//将y加入x的可吃集(x+n)
      add(y+2*n,x);//将x加入y的被吃集(y+2n)
      add(x+2*n,y+n);//将y+n加入x的被吃集(x+2n)
      

总结

  • 分析每种个体存在多少种不同的关系,将这些关系分为不同的集合,最后通过并查集维护。

欢迎指出疏漏。

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

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

相关文章

软件工程学习日志2025.10.24

在当今快节奏的软件开发世界中,技术硬实力是入场券,而卓越的沟通协作能力,则是决定一个工程师能走多快、多远的隐形翅膀。为了弥合校园与职场之间的能力鸿沟,我深入调研了以高效协同著称的字节跳动,并以此为镜,反…

ABP - 种子数据 [IDataSeeder、DataSeedContext]

种子数据(Seed Data) 核心辅助类:IDataSeeder:数据种子接口。 DataSeedContext:种子数据上下文。种子数据是指项目启动时自动向数据库插入的初始化数据(比如默认管理员账号、基础配置项、测试数据等),核心作用…

[KaibaMath]1014 基于取整函数[x]的定义求解一道特殊的一元二次方程

[KaibaMath]1014 基于取整函数[x]的定义求解一道特殊的一元二次方程取整函数[x]的定义是[x]≤x<[x]+1. 下面基于运用此定义,求解一道特殊的一元二次方程:x^2-2[x]+0.9=0.

基础题目

超级基础的题虽然是数学,但是仍以 \(OI\) 的题为例,毕竟 \(OI\) 的组合计数题还是很高质的,但别担心,组合计数主要是数学推导,所以文中的题仅会推导数学的理论知识或公式,不会有代码实现。但为了方便,还是会把题…

完整教程:紫外UV相机在机器视觉检测方向的应用

完整教程:紫外UV相机在机器视觉检测方向的应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

三种 Badcase 精度验证方案详解与 hbm_infer 部署实录

在模型结构优化与部署量化过程中,开发者往往会遇到一个关键任务:​基于历史 Badcase 数据验证模型精度变化​,确保模型修改不会引入明显性能退化。 这类验证常见于感知、预测、行为识别等任务,尤其在客户交付或精度…

CF512E. Cycling City

题目传送门 十分有趣的题。 思路 三条路径,本质上其实就是 \(x,y\) 同时属于两个有交集(至少交一条边)的简单环,这个肯定没问题。 套路的跑一遍 dfs,然后就有了返祖边树边和横叉边,然后朴素的分讨然后用个数据结…

ABP - 事件总线(Event Bus)[IEventBus、LocalEventBus、IntegrationEvent]

(1)事件总线(Event Bus) 核心辅助类:IEventBus:发布/订阅事件。 LocalEventBus:本地事件总线(进程内)。 IntegrationEvent:跨服务集成事件。事件总线是一种“发布-订阅”模式的通信机制,用于解耦系统中的各…

【ArcMap】基本操作1:查看属性表Table、测量路线长度、打断点

1.查看 a.查看线段信息b.查看属性表Table c.查看坐标点 2.测量路线长度-简单 3.打断点 4.画线

CSP-S模拟37

T1:回文(string) 思路: 由于本题的数据范围较小,所以可能有多种 \(dp\) 状态,这里只呈现其中可能较典的两种外加一种暴搜最优解。 DP1: 我们设 \(f_{i,j,x,y}\) 表示使用 \(a\) 串的 \(i\) ~ \(j\) 和 \(b\) 串…

Google Skills免费开放啦

Google Skills免费开放啦家人们,AI圈的大事来啦!Google搞了个大动作,直接把内部的AI学习资源打包成“Google Skills”平台,向全球开放!这波操作直接把AI学习的门槛拉到超低,普通人也能轻松上车!免费用户直接用G…

ABP - 缓存(Caching)[IDistributedCache、ICacheManager、ICacheKeyNormalizer、[Cache]、[CacheInvalidate]]

(一)缓存(Caching) 核心辅助类:IDistributedCache:分布式缓存(基于Redis等)。 ICacheManager:缓存管理器(支持多级缓存)。 [Cache]:方法缓存特性。 ICacheKeyNormalizer:缓存键标准化器,自动添加租户前缀…

好想成为人类啊——2025 . 10 . 24

好想成为人类啊。 今天应该是比较著名的程序员节,貌似大家都在庆祝。但我其实没啥感觉,因为我的理想并不是成为一个程序员。 那我的理想是什么呢,也好像并没有什么理想,可能跟艺术方面沾点儿边吧,当然,这怎么看都…

10 24(+第14场补题)

14.3维护 \(cur\), \(ans\) , \(dif = cur - ans\) 。 每次执行 \(cur = cur + a_i, \quad dif = dif + a_i\)。如果 \(cur < 0\),则 \(dif -= cur, \quad cur = 0\)。 如果 \(dif > 0\),则 \(dif = 0\)。考虑…

详细介绍:C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题

详细介绍:C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

详细介绍:第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)

详细介绍:第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

《打造自己的 DeepSeek》第 1 期:为什么要打造自己的 DeepSeek?

近些年 AI 大火,不过在国内真正火起来还是源于今年春节期间的 DeepSeek。 个人认为有两方面原因:一方面是 DeepSeek 使用方便。由于众所周知的原因,国内对国外网站的访问是有诸多限制的,其中就包括各大 AI 模型的官…

ret2text

from pwn import * io = remote("39.106.48.123", 29826) payload = b"A"*264 + p64(0x401202) io.sendline(payload) io.interactive() 264即258+8,258是rbp的位置,ida里一般是16位,0x401202为…

ABP - 异常处理(Exception Handling)[AbpExceptionFilter、UserFriendlyException、IExceptionSubscriber]

一、异常处理(Exception Handling) 常用核心辅助类:AbpExceptionFilter:自动捕获并处理异常。 UserFriendlyException:用户友好异常(直接返回给前端)。 IExceptionSubscriber:自定义异常订阅。1、核心类全解析…

2025年沸腾干燥机厂家权威推荐榜单:专业直销与高效节能技术深度解析,提供优质沸腾干燥设备及定制方案

2025年沸腾干燥机厂家权威推荐榜单:专业直销与高效节能技术深度解析,提供优质沸腾干燥设备及定制方案 沸腾干燥技术作为现代工业干燥领域的重要工艺,凭借其高效的传热传质效率和均匀的干燥效果,在制药、化工、食品…