news 2026/6/11 13:36:59

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
扩展域并查集(种类并查集)

理解思想

一.团伙

给定若干满足如下两条的关系,求会构成多少个团伙:

为朋友。

为敌人。

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

每个人存在两种关系,将两种关系分为两个集合:

朋友集(

)。

敌人集(

)。

对于每种关系:

如果

是朋友,就将

加入

的朋友集,即操作:

//将y加入x的朋友集(x)

add(x,y);

如果

是敌人,就将

加入

的敌人集,将

加入

的敌人集,即操作:

//分别将x,y加入对方的敌人集

add(x+n,y);//x的敌人集(x+n)

add(y+n,x);//y的敌人集(y+n)

这样实际上利用了:

敌人的敌人就是朋友这一性质,将无法维护(无法合并)的敌对关系

,换成了敌人与敌人间的朋友关系

二.食物链

给定若干满足如下三条的关系,求有多少条件不合法:

为同类。

,则有

每个人存在三种关系,将三种关系分为三个集合:

同类集(

)。

可吃集(

)。

被吃的集(

),后面简称为被吃集。

注意:拥有多种关系时,要进行关系传递。如

同类,

能吃的

也能吃。

对于两种情况:

如果

是同类,就将

加入

的同类集,将

能吃的加入

的可吃集,将吃

的加入

的被吃集,即操作:

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)

如果

,就将

加入

的可吃集,将

加入

的被吃集,将

加入

的被吃集(根据关系

),即操作:

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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 7:36:06

《手搓》线程池

一、什么是《手搓》线程池手搓线程池并不是用来完全代替系统线程池的你可以把手搓线程池看做系统线程池的一部分就好比在东海用集装箱搞养殖一个集装箱里养鱼另一个集装箱里养虾搞好隔离,鱼虾都不耽搁二、最常用线程池的场景是什么当然是Task,是用TaskFactory.StartNew方法创建…

作者头像 李华
网站建设 2026/6/10 18:19:51

【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/6/10 16:59:49

LLM 场景下的强化学习技术扫盲

强化学习基础:行业黑话想象你正在和一个刚训练好的语言模型聊天。你问:“今天过得怎么样?”模型可能回:“还行。” 也可能回:“我是个 AI,没有感情。”人类觉得前者更自然、更友好——这就是偏好反馈。强化…

作者头像 李华
网站建设 2026/6/10 22:47:24

多智能体协同系统

多智能体协同系统的核心概念 多智能体协同系统(Multi-Agent Systems, MAS)通过多个自主智能体的交互实现复杂任务,广泛应用于机器人协作、自动驾驶、游戏AI等领域。核心特性包括分布式决策、通信协议、任务分配与冲突解决。典型应用案例 1. 无…

作者头像 李华
网站建设 2026/6/10 14:08:40

多角度关于人的本质的论述,你怎么思考?

第六章:多角度关于人的本质的论述人的本质,人和动物的区别是什么,此文可以参考。这个问题很深奥,历来人类试图回答。比如中国古代对于人,有善恶之分,但这显然不具有说服力。以下是马克思哲学关于人本质的思…

作者头像 李华