【学习笔记】带权并查集

news/2025/10/30 10:19:37/文章来源:https://www.cnblogs.com/GSNforces/p/19176068

简介

我们还可以在并查集的边上定义某种权值和这种权值在路径压缩时产生的运算,从而解决更多的问题。也称为「种类并查集」或「拓展域并查集」。

实现

为了维护并查集中的边权,需要将边权下放到子节点中存储。因此,每个节点存储的都是它到它的父节点之间的边权。只有当一个节点的父节点发生变化时,才需要相应地调整边权。一般情形中,这可能发生在路径压缩和合并两个节点时。

例题 三值逻辑

题解

可以将 U,T 看作两个点
首先可以预处理出点 \(i(1\le i \le n)\) 由哪个点 \(from_i\) 的初始值决定,且 \(i\)\(from_i\) 之间的边权为 \(w_i\)
之后跑一次带权并查集,从 \(1\)\(n\) 遍历每一条边,因为要使所有边的限制都满足,所以如果遍历到一条边,边两端的端点都已经在同一个集合中了,且两点间的边权异或值不是当前边的边权,那么就需要把整个集合都设为 U。
最后统计根是 U 的个数即可。

code

注意,写带权并查集时,对于点 x,要先执行 f[x]=find(f[x]) 来计算 f[x] 到根的边权异或和,但是这时 f[x] 就是根而不是原来的 f[x],所以要先用 tmp 将原本的 f[x] 记录下来,具体见代码。

#include<bits/stdc++.h>
#define fo(a, b, c) for(int b = a; b <= c; b++)
#define N 1000010
using namespace std;
int c, T, n, m;
int fa[N], p[N], from[N], w[N];
int find(int x){if(x == fa[x]) return x;int tmp = fa[x];return fa[x] = find(fa[x]), p[x] ^= p[tmp], fa[x];
}
void solve(){cin >> n >> m;fo(1, i, n + 2) fa[i] = i, p[i] = 0, from[i] = i, w[i] = 0;fo(1, i, m){int x, y; char op;cin >> op >> x;if(op == '+' || op == '-') cin >> y;if(op == '+') from[x] = from[y], w[x] = w[y];if(op == '-') from[x] = from[y], w[x] = w[y] ^ 1;if(op == 'T') from[x] = n + 1, w[x] = 0;if(op == 'U') from[x] = n + 2, w[x] = 0;if(op == 'F') from[x] = n + 1, w[x] = 1;}fo(1, i, n){int x = i, y = from[i], fx = find(x), fy = find(y);if(fx != fy) fa[fx] = fy, p[fx] = p[x] ^ p[y] ^ w[x]; else if(p[x] ^ p[y] ^ w[x]) fa[fx] = n + 2, p[fx] = 0;}int ans = 0;fo(1, i, n){if(find(i) == n + 2) ans++;}cout << ans << "\n";
}
int main(){ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cin >> c >> T;while(T--) solve();return 0;
}

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

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

相关文章

2025年钢带木箱生产商权威推荐榜单:物流运输包装木箱/可拆卸木箱/物流运输钢边箱源头厂家精选

在工业包装领域,优质钢带木箱不仅能有效保护设备运输安全,还能显著降低物流成本。 工业包装领域对钢带木箱的需求正日益增长,这种采用镀锌钢带与胶合板结合的可拆卸包装结构,因其可重复使用、拆装便捷的特点,已成…

大促全链路隔离

目录背景和价值一、业务容器集群:核心与非核心“物理/逻辑隔离”1. 为什么需要隔离?2. 如何实现?二、数据库:按业务拆分+读写分离,避免“一库拖全链路”1. 为什么需要隔离?2. 如何实现?三、缓存(如 Redis):业…

Notepad++ 下载安装与配置全攻略(2025最新版)—— 高效编辑技巧全指南

Notepad++ 是一款轻量高效的开源文本编辑器,支持多语言语法高亮与插件扩展。本文提供 Notepad++ 下载安装详细步骤、安装包下载地址、防坑安装建议及主题配置技巧。适配 Win7、Win10、Win11 系统,让你从入门到高效使…

2025年性价比高的纳米大单槽厂家推荐及选购参考榜

2025年性价比高的纳米大单槽厂家推荐及选购参考榜 随着家居生活品质的不断提升,厨房装修成为现代家庭关注的重点之一。纳米大单槽因其耐用、易清洁、抗菌等特性,成为厨房水槽的热门选择。2025年,市场上涌现出众多纳…

利用React Hooks简化状态管理

React 是当前最流行的前端框架之一,它以其高效的虚拟DOM和组件化的思想受到了广大开发者的青睐。随着React 16.8版本的发布,Hooks API的引入更是给React开发带来了革命性的变化。本文将通过一个简单的计数器应用示例…

2025年靠谱的304冲压式潜水搅拌机最新TOP厂家推荐

2025年靠谱的304冲压式潜水搅拌机最新TOP厂家推荐随着环保要求的不断提高和水处理行业的快速发展,304不锈钢冲压式潜水搅拌机作为污水处理系统中的关键设备,其市场需求持续增长。这类设备主要用于市政污水处理、工业…

我们如何解决求子集团个数

题面 方法一 首先预处理每个子集是否成团,然后枚举子集即可 \(O(3^n+n2^n)\)。 方法二 考虑 meet in the middle,左侧处理处每个子集是否成团,右侧处理每个子集是否成团,然后枚举其子集成团数量,最后在枚举左侧合…

从零开始制作 MyOS(四)

从零开始制作 MyOS(四)—— 跳转到 C 语言编写的小型内核 目标 在引导加载器准备好后,用 C 语言编写一个小型内核并实现从引导加载器跳转到内核执行。 代码 引导程序文件 org 0x7C00 bits 16start:; 初始化段寄存器…

2025年10月压力监测厂家对比榜:五强评测与选型参考

进入2025年,水务、热力及工业管网对“压力监测”的实时性、耐久性与数据闭环能力提出更高要求。用户常见场景有三类:一是水务集团需要长寿命、毫秒级水锤捕捉终端,以降低爆管率;二是热力公司希望在高温高湿环境下获…

2025年质量好的洗菜盆厨房水槽优质厂家推荐榜单

2025年质量好的洗菜盆厨房水槽优质厂家推荐榜单 随着现代厨房设计的不断升级,洗菜盆和水槽作为厨房的核心功能部件,其质量、设计和功能性越来越受到消费者的重视。优质的洗菜盆不仅能提升厨房的使用体验,还能延长使…

基于VC++和ObjectARX开发的AutoCAD曲线交点打断功能实现代码

// CurveIntersectionBreaker.h #pragma once #include "dbents.h" #include "dbsymtb.h" #include "gecurv.h"class CCurveIntersectionBreaker { public:CCurveIntersectionBreaker()…

12个单词

client 客户端 process 进程 request 请求 headers 请求头/响应头 breakpoints 断点 response 响应 status 状态 code 代码 type 类型 size 大小

2025年评价高的滚珠丝杆升降机用户好评厂家排行

2025年评价高的滚珠丝杆升降机用户好评厂家排行 随着工业自动化需求的持续增长,滚珠丝杆升降机作为精密传动设备的核心部件,其性能、稳定性和售后服务成为用户选择的关键指标。2025年,通过对市场用户反馈、技术实力…

2025 年消防培训学校最新推荐榜,技术实力与市场口碑深度解析

本次消防培训学校推荐榜,由消防协会联合职业技能鉴定中心共同测评发布,测评周期覆盖 2024-2025 年度。测评体系包含 6 大核心维度:教学资质合规性(权重 25%)、师资团队专业度(权重 20%)、教学设施完备性(权重 …

2025年知名的GXN-CMS型碳分子筛实力源头

2025年知名的GXN-CMS型碳分子筛实力源头碳分子筛行业概述碳分子筛(Carbon Molecular Sieve,简称CMS)是一种具有均匀微孔结构的新型吸附材料,其孔径与气体分子直径相近,能够根据不同气体分子的大小和形状实现高效分…

2025年10月中国离婚财产分割律师榜单:官方资质与用户口碑综合排名

引言与现状分析 当婚姻走到尽头,财产分割往往成为双方最焦灼的战场。房产、股权、保险、知识产权、境外资产交织在一起,隐匿、转移、混同手段层出不穷,普通人很难凭一己之力厘清线索、固定证据、争取公平份额。于是…

2025 年上海留学服务机构最新推荐榜,聚焦机构综合服务实力与留学申请口碑深度解析

引言 随着 2025 年上海留学市场需求持续增长,行业规范化发展成为核心趋势。为精准筛选优质服务机构,本次榜单评选联合教育国际交流协会留学服务分会,采用多维度测评体系:从机构资质(教育部特许中介资质持有率 100…

用Fiddler修改网页title的步骤

打开Fiddler,在规则中将自动断点改为在再返回后随后打开京东网页, 右侧打开filters进行筛选Actions运行 随后在左侧选择京东网站的对应条目 在右侧文本查看中,将其title该成其他的 随后运行到完成,打开网址可以看到…

K3s x RustFS,边缘场景下的云原生存储解决之道

本文分享使用 Helm Chart 在 K3s 上安装 RustFS。使用 K3s local-path-provisioner 来将本地磁盘转换诶 PVC,再将 PVC 当作 RustFS VOLUME,从而搭建 RustFS 多机多盘集群。 关于 RustFS RustFS 是一个用 Rust 编写的…