随笔分类 -  并查集

1
摘要:解题思路 这个问题可以看作是一个图论中的链式关系计数问题。我们需要将n个同学排成一队,其中有些同学必须相邻且保持前后顺序。 核心思路: 将必须相邻的同学对视为一个整体(链),每个这样的链在最终排列中作为一个整体出现 使用并查集来维护这些链,将必须相邻的同学合并到同一个集合中 检查约束条件的合法性: 阅读全文
posted @ 2025-10-08 18:16 CRt0729 阅读(20) 评论(0) 推荐(0)
摘要:解题思路与代码注释 解题思路 这道题目需要解决的是有向图的传递闭包问题,要求找出最少需要多少个起点(刻录光盘的营员),使得通过这些起点可以到达图中的所有节点(所有营员都能获得资料)。 关键步骤: 构建邻接矩阵:记录每个营员愿意直接拷贝给哪些其他营员 计算传递闭包:使用Floyd-Warshall算法 阅读全文
posted @ 2025-05-27 20:42 CRt0729 阅读(54) 评论(0) 推荐(0)
摘要:解题思路 这道题目是一个典型的最小生成树(Minimum Spanning Tree, MST)问题,需要满足以下要求: 选择的边能够连通所有节点(形成生成树) 选择的边尽可能少(对于生成树来说,边数固定为n-1) 选择的边中最大权值尽可能小 方法思路 Kruskal算法:使用贪心策略,按边的权值从 阅读全文
posted @ 2025-05-27 20:23 CRt0729 阅读(39) 评论(0) 推荐(0)
摘要:代码思路详解: 数据结构设计: 使用扩展的并查集,每个动物x维护三个信息: x:自身 x + n:x的食物 x + 2n:x的天敌 关系处理逻辑: 同类关系(op==1): 检查是否已经存在捕食或天敌关系 合并自身、食物和天敌三个维度的信息 捕食关系(op==2): 检查是否已经是同类或反向捕食关系 阅读全文
posted @ 2025-04-23 22:24 CRt0729 阅读(48) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2025-04-23 21:32 CRt0729 阅读(8) 评论(0) 推荐(0)
摘要:星球大战题解:逆向思维与并查集应用 解题思路 这道题目要求我们处理动态删除节点后的连通块数量问题。直接处理删除操作比较困难,因此采用逆向思维:从最后的状态开始,逐步添加被删除的节点,计算连通块的变化。 关键步骤 逆向处理:从所有星球都被删除的状态开始,逐步添加被删除的星球 并查集维护:使用并查集数据 阅读全文
posted @ 2025-04-23 21:29 CRt0729 阅读(64) 评论(0) 推荐(0)
摘要:代码实现了标准的并查集数据结构 使用路径压缩优化查找操作 支持两种操作: 合并两个元素所在的集合(op=1) 查询两个元素是否在同一集合(op=2) 对于查询操作,输出"Y"表示属于同一集合,"N"表示不属于 阅读全文
posted @ 2025-04-23 19:08 CRt0729 阅读(51) 评论(0) 推荐(0)
摘要:由DS倾情奉献,由CJ详细修改 并查集:对集合进行合并merge、查找find两个操作f[i]:i所在的集合代表是谁(i所在学校的校长是谁/i的上级/i的爹/i的父亲/i的祖先) 初始化f[i] = i : 每个人是自己的上级 合并merge(x,y):合并x和y所在的集合,可能是x合并到y,也可能 阅读全文
posted @ 2025-04-23 18:51 CRt0729 阅读(358) 评论(0) 推荐(0)
摘要:描述 给定一个n个顶点(1~n编号),m条边的简单无向图,判断是否是一个路径图。 路径图要求:必须存在一个顶点序列v1, v2, ..., vn,它是1~n的一个排列,且对于任何1<=i<=n-1,vi和vi+1之间有边相连,而对于任何1<=i, j<=n(其中|i-j|>=2),vi和vj之间没有 阅读全文
posted @ 2023-08-10 20:43 CRt0729 阅读(52) 评论(0) 推荐(0)
摘要:王先生想要一些男孩帮助他完成一个项目。因为项目比较复杂,男生来的越多越好。当然有一定的要求。王先生选择了一个足够容纳孩子们的房间。没有被选中的男孩必须立即离开房间。一开始房间里有10000000个男孩,编号从1到10000000。经过王先生的选择,他们中仍然在这个房间里的任何两个应该是朋友(直接或间 阅读全文
posted @ 2023-04-30 09:18 CRt0729 阅读(60) 评论(0) 推荐(0)
摘要:描述 编写一个程序,读取 SNS(社交网络服务)中的关系,并判断给定的用户对是否可以通过网络相互访问。 输入 第一行给出了两个整数n和m。n 是 SNS 中的用户数,m 是 SNS 中的关系数。SNS 中的用户由 ID 0,1,...,n-1 标识。 在接下来的 m 行中,给出了关系。每个关系由两个 阅读全文
posted @ 2023-04-30 09:17 CRt0729 阅读(55) 评论(0) 推荐(0)
摘要:描述 江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一 阅读全文
posted @ 2023-04-30 09:13 CRt0729 阅读(38) 评论(0) 推荐(0)
摘要:描述 有n个人,编号为1,2,……n,另外还知道存在K个关系。一个关系的表达为二元组(α,β)形式,表示α,β为同一家庭的成员。 当n,k和k个关系给出之后,求出其中共有多少个家庭、最大的家庭中有多少人? 例如:n=6,k=3,三个关系为(1,2),(1,3),(4,5) 此时,6个人组成三个家庭, 阅读全文
posted @ 2023-04-28 17:36 CRt0729 阅读(89) 评论(0) 推荐(0)
摘要:描述 某个局域网内有n(n≤100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度(f(i,j)≤ 阅读全文
posted @ 2023-03-15 15:08 CRt0729 阅读(68) 评论(0) 推荐(0)
摘要:描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节省费用,我们采用数据的间接传输手段,即一台计算机可以 阅读全文
posted @ 2023-03-15 15:00 CRt0729 阅读(172) 评论(0) 推荐(0)
摘要:描述 有一些人一起旅行。他们中的一些人是朋友。朋友关系是传递性的,即如果A和B是朋友,B和C是朋友,那么A和C也会成为朋友。 这些人打算在酒店预订一些房间。但是他们每个人都不想和陌生人住在一起,也就是说,如果A和D不是朋友,他们是不能住一个房间的。 鉴于这些人的信息,你能确定他们至少要预订多少间客房 阅读全文
posted @ 2023-03-02 21:11 CRt0729 阅读(35) 评论(0) 推荐(0)
摘要:1299: 描述 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 输入 测试输入包含若干测试用例。每个测试用例的第1行 阅读全文
posted @ 2023-03-02 20:50 CRt0729 阅读(46) 评论(0) 推荐(0)
摘要:描述 上次Gardon的迷宫城堡小希玩了很久(见3645),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任 阅读全文
posted @ 2023-03-02 19:58 CRt0729 阅读(109) 评论(3) 推荐(1)
摘要:先来看看代码清单: (1)初始化 for(int i=1;i<=n;i++)f[i] = i; //初始化每个的爹是自己 因为每个元素属于单独的一个集合,所以每个元素以自己作为结点 (2)寻找根结点编号并压缩路径 int find(int x) { //如果第x个人的爹f[x]不是自己,那么就继续去 阅读全文
posted @ 2022-12-30 21:09 CRt0729 阅读(168) 评论(0) 推荐(0)
摘要:一个超级有意思,好懂的并查集解释, 膜拜大神,资料太多,找不到原著了,所以算是知识剽窃了。 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 故事读完了,并查集就会了 江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走 阅读全文
posted @ 2022-10-27 17:35 CRt0729 阅读(72) 评论(0) 推荐(0)

1