news 2026/6/10 10:14:13

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

作者头像

张小明

前端开发工程师

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/7 23:59:52

【MPC】模型预测控制(MPC)之多变量和状态空间研究附Matlab代码

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

作者头像 李华
网站建设 2026/6/9 5:36:58

Java毕设项目:基于springboot的汽车租赁买卖管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

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

神经网络和深度学习 第四周:深度神经网络的关键概念

周为第一课的最后一周内容,就像标题一样,我们从第二周的逻辑回归,到第三周的浅层神经网络, 再到本周的深度神经网络的概念层层递进,第一课内容主要还是对神经网络框架的基本介绍,因此本周实际上的主要内容还…

作者头像 李华
网站建设 2026/6/6 23:18:02

【打造自己的 DeepSeek】第 1 期:为什么要打造自己的 DeepSeek? _

个人认为有两方面原因:一方面是 DeepSeek 使用方便。由于众所周知的原因,国内对国外网站的访问是有诸多限制的,其中就包括各大 AI 模型的官网。而 DeepSeek 是国内研发的,可以直接访问,网页使用是非常方便的。而且 Dee…

作者头像 李华
网站建设 2026/6/9 15:24:50

达梦数据库与部分的联动使用

介绍达梦数据库概述达梦数据库(DM Database)是由武汉达梦数据库股份有限公司研发的国产大型关系型数据库管理系统(RDBMS),具备自主知识产权,广泛应用于政务、金融、能源、电信等关键领域,是国内…

作者头像 李华