首页 > 其他分享 >浅谈一类多重传递关系的并查集问题

浅谈一类多重传递关系的并查集问题

时间:2023-02-20 17:57:06浏览次数:81  
标签:关系 多重 浅谈 边权 查集 奇偶性 fa operatorname

首先解释一下什么叫“多种传递关系”:

普通的并查集只能维护“朋友的朋友是朋友”,而面临“敌人的敌人是朋友”的情况十分乏力,多种传递关系即指“敌人的敌人是朋友”类情况。

我们首先看这样一个问题:

P5937 [CEOI1999] Parity Game

我们考虑将一段区间的奇偶性转化为前缀和形式,设 \(s_i\) 表示第 \(i\) 位的前缀和,则当区间 \([l,r]\) 有奇数个时,\(s_{l-1}\) 与 \(s_r\) 奇偶性不同,有偶数个时相同,这样可以转化为一个可以并查集处理的东西。

但稍加思索我们会发现这里有多种传递关系,不是单纯的在或不在一个集合里:

  • \(i\) 与 \(j\) 奇偶性相同,\(j\) 与 \(k\) 奇偶性相同,则\(i\) 与 \(k\) 奇偶性相同。

  • \(i\) 与 \(j\) 奇偶性相同,\(j\) 与 \(k\) 奇偶性不同,则\(i\) 与 \(k\) 奇偶性不同。

  • \(i\) 与 \(j\) 奇偶性不同,\(j\) 与 \(k\) 奇偶性不同,则\(i\) 与 \(k\) 奇偶性相同。

对于这种多种传递关系问题,有两种方法。

边带权并查集

我们知道,并查集是一个树形结构,所以我们可以将边加上边权,设 \(d_i\) 为第 \(i\) 位与 \(fa_i\) 之间的边权。

对于上面的题,注意到传递关系与异或十分相似,于是有 \(d_i=0\) 时,\(i\) 与 \(fa_i\) 奇偶性相同,\(d_i=1\) 时,\(i\) 与 \(fa_i\) 奇偶性不同(反过来也行)。判断时,判断两点 \(d\) 值异或的结果是否与给出结果对应即可。(只计算两点边权的的原因是并查集缩到最简形态一定是菊花,两个边权相邻成为一条链)。

对应的,\(\operatorname{find}\) 函数也会发生一些改变:

int find(int x){
	if(fa[x]==x) return x;
	int fx=find(fa[x]);
	d[x]^=d[fa[x]];//这里增加了一条维护边权的语句,根据情况更改
	return fa[x]=fx;
}

对于两个点不在一个集合里的情况,我们往往可以通过一些手段知道两个树形结构根之间应该取的边权,仍以这一题为例,由于不在一个即合理所以这条关系默认成立,设合并的两个并查集根为 \(p\),\(q\),将 \(p\) 合并到 \(q\),即有 \(ans=d_x \operatorname{xor} d_y \operatorname{xor} d_p\),移项得 \(d_p=d_x \operatorname{xor} d_y \operatorname{xor} ans\),问题解决。

扩展域并查集

我们考虑开两个并查集,分别表示“朋友”与“敌人”关系。

对于关系不确定的两个点,我们尝试带入两个并查集,寻找合法的关系决定他们的状态。

说一下上面那道题的解法:

开两个并查集,分别代表 \(s_x\) 为奇数与 \(s_x\) 为偶数,称为奇数域和偶数域,写为 \(x_o\) 与 \(x_e\),假设目前处理 \(x\) 与 \(y\) 的关系。

若偶数个,则合并 \(x_o\),\(y_o\) 与 \(x_e\),\(y_e\)。

若奇数个,则合并 \(x_o\),\(y_e\) 与 \(x_e\),\(y_o\)。

判断合法同理。

可能有人对如何合并两个并查集里的东西有点疑问:

我们开在一个数组里就好了。

个人感觉一般情况下扩展域更好想点。

标签:关系,多重,浅谈,边权,查集,奇偶性,fa,operatorname
From: https://www.cnblogs.com/victoryang-not-found/p/17135681.html

相关文章

  • 浅谈架构
    架构什么是架构我认为架构就是根据实际情况划分出边界,然后通过边界的划分,可以再细分出每一个小的点,一点点的去完成架构解决的问题就是人的问题什么是桌子,一个面,四个腿......
  • 浅谈strtok函数的原理与使用
    对于strok函数的理解,自己也是很迷茫,尤其看到有的范例将第一参数设为NULL也很是不解,也是找了许多博文,并看了官方的英文文档才浅显地理解了。这位前辈的博文对我启发很大。链......
  • 浅谈单调队列解决滑动窗口问题
    这次我们了解一下滑动窗口的问题首先,让我们了解一下滑动窗口是什么?这里有一张图(来自POJ),解释了滑动窗口的意思:我们可以看见,一个长度固定为3的框(窗口)从左端点移动到右......
  • A - 并查集【2022级专题三图论课后练习】
    A-并查集思路模板注意01串的处理代码点击查看代码#include<iostream>usingnamespacestd;#defineXfirst#defineYsecondtypedefpair<int,int>pii;......
  • 浅谈微服务--理解入门级
    概念微服务是将单一的应用程序拆分成多个微小的服务,各个小服务之间松耦合,高内聚,每个小的服务可以单独进行开发,可以使用不同的数据存储技术,可以独立部署,拥有各自的进程,相互......
  • 【算法训练营day46】LeetCode139. 单词拆分 多重背包基础
    LeetCode139.单词拆分题目链接:139.单词拆分独上高楼,望尽天涯路没什么思路。慕然回首,灯火阑珊处挖个坑,二刷的时候填。classSolution{public:boolwordBreak......
  • 【DFS&并查集】岛屿数量
    经典的dfs/bfs问题,给一个起点开始搜索,满足条件则继续调用dfs/bfs从没有访问过的某个陆地出发,将所有能到达的陆地的状态都记录为已访问。下次出发不从已访问的陆地出发,每次......
  • 浅谈安科瑞医用隔离电源系统在某省医院项目中的应用
    【摘要】:介绍该三级医院采用安科瑞医用隔离电源柜,使用落地式安装方式,从而实现将TN系统转化为IT系统,同时监测系统绝缘情况。【关键词】医用隔离电源柜;IT系统;绝缘情况;中西医结......
  • 浅谈限流式保护器在户外汽车充电站的应用
     摘要:国家标准GB51348-2019中规定储备仓库、电动车充电等场所的末端回路应设置限流式电气防火保护器。电气防火限流式保护器可以有效克服传统断路器、空气开关和监控设备......
  • 浅谈电气设备无线测温技术的优势与应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801摘要:无线测温技术以其安装方便灵活、测温精度高、安全可靠、环境适应性好、便于集中管理等优点,解决了电气设备长期带电运行......