Codeforces 1144D Deduction Queries 并查集

Deduction Queries

用并查集维护前缀的关系, 在同一个联通块内两两之间的异或值都是已知的。

每个点再维护一个和它当前父亲的异或值, 压缩路径的时候更新一下就好了。

#include<bits/stdc++.h>
#define LL long long
#define LD long double
#define ull unsigned long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ALL(x) (x).begin(), (x).end()
#define fio ios::sync_with_stdio(false); cin.tie(0);using namespace std;const int N = 5e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double PI = acos(-1);template<class T, class S> inline void add(T& a, S b) {a += b; if(a >= mod) a -= mod;}
template<class T, class S> inline void sub(T& a, S b) {a -= b; if(a < 0) a += mod;}
template<class T, class S> inline bool chkmax(T& a, S b) {return a < b ? a = b, true : false;}
template<class T, class S> inline bool chkmin(T& a, S b) {return a > b ? a = b, true : false;}int q, tot;
map<int, int> Map;int xorWithFa[N];
int fa[N];int getRoot(int x) {if(x == fa[x]) return x;int preFa = fa[x];int nowFa = getRoot(fa[x]);xorWithFa[x] ^= xorWithFa[preFa];return fa[x] = nowFa;
}int main() {for(int i = 1; i < N; i++) fa[i] = i;scanf("%d", &q);int ans = 0;while(q--) {int op; scanf("%d", &op);if(op == 1) {int l, r, x;scanf("%d%d%d", &l, &r, &x);l ^= ans; r ^= ans; x ^= ans;if(l > r) swap(l, r);l--;if(Map.find(l) == Map.end()) Map[l] = ++tot;if(Map.find(r) == Map.end()) Map[r] = ++tot;l = Map[l]; r = Map[r];int fal = getRoot(l);int far = getRoot(r);if(fal != far) {int xor1 = xorWithFa[l];int xor2 = xorWithFa[r];fa[far] = fal;xorWithFa[far] = xor1 ^ xor2 ^ x;}} else {int l, r;scanf("%d%d", &l, &r);l ^= ans; r ^= ans;if(l > r) swap(l, r);l--;if(Map.find(l) == Map.end() || Map.find(r) == Map.end()) {puts("-1");ans = 1;} else {l = Map[l]; r = Map[r];int fal = getRoot(l);int far = getRoot(r);if(fal != far) {puts("-1");ans = 1;} else {ans = xorWithFa[l] ^ xorWithFa[r];printf("%d\n", ans);}}}}return 0;
}/*
*/

 

转载于:https://www.cnblogs.com/CJLHY/p/10875235.html

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

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

相关文章

python一步将npy数据保存成mat

import scipy.io as io io.savemat("dataname.mat", {data: npy_data})使用scipy库中的io模块&#xff0c;只需一步就可以将npy矩阵保存为mat格式文件&#xff0c;第一个参数是保存路径&#xff0c;第二个参数需要输入一个字典&#xff0c;data键对应需要保存的数据。…

docker oracle 11g

话不多说 开始记录docker拉取阿里的oracle11g 镜像并进行配置&#xff0c; 用pl/sql 可以登录为最终结果 navicat连接是在最后一步 这是我们所需要进行拉取oracle镜像的楼主所给出的说明 参考&#xff1a;https://blog.csdn.net/zwx521515/article/details/77982884 但是根…

Linux的目录结构

Linux文件系统是呈树形结构&#xff0c;了解Linux文件系统的目录结构&#xff0c;对于我们驾驭Linux还是有必要的。 目录 说明 / Linux文件系统的入口&#xff0c;也是处于最高一级的目录 /bin 基本系统所需要的命令。功能和/usr/bin类似&#xff0c;这个目录中的文件都是…

npy一维数组如何对给出的索引进行反选

本文主要解释了如何根据给定的索引对一维数组进行反选的操作。 以下文数据为例 import numpy as np data np.array([ 0.93825827, 0.26701143, 0.99121108, 0.35582816, 0.90154837, 0.86254049, 0.83149103, 0.42222948, 0.27309625, 0.38925281] )如果我们给定一个阈值…

一文看懂卷积神经网络CNN的核心

在之前&#xff0c;我总结了关于计算机神经网络与梯度下降的核心&#xff0c;详见下文链接 : 一文看懂计算机神经网络与梯度下降 本文主要会对图像相关的机器学习中最为重要的网络&#xff0c;卷积神经网络作个人的理解分析。 1. 为什么要使用卷积神经网络 在讲述原理之前&am…

[LeetCode] Two Sum

一刷&#xff1a; import java.util.Arrays;public class Solution1 { public int[] twoSum(int[] nums, int target) {int[] indexnew int[2];int sum0;for (int i 0; i < nums.length; i) {for (int j i1; j < nums.length; j) {sumnums[i]nums[j];index[0] i;index[…

docker 安装 oracle 11g

1.准备docker环境&#xff1b; 2. docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g --pull 镜像&#xff08;6个多G&#xff09; 3.docker run -d -p 1521:1521 -v /data/oracle:/data/oracle --name oracle11 registry.cn-hangzhou.aliyuncs.com/helowin…

机器学习理论梳理2 : KNN K近邻分类模型

本文主要梳理KNN&#xff0c;K近邻模型的基本原理。 从机器学习的大分类来看&#xff0c;K近邻模型属于监督学习中的一种判别式模型&#xff0c;常用于分类问题。初始的数据集中&#xff0c;包含了已经分类标签好的数据。一句话来说&#xff0c;K近邻模型就是通过计算实例与现…

docker安装配置gitlab详细过程

1、方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2、方法二 如果服务器网路不好或者pull不下来镜像&#xff0c;只能在其它网路比较好的机器上pull下来镜像&#xff0c;导出成一个文件&#xff0c; 再下载上传到网路不好的机器上&#xff0c;然后再从文件中导出来&am…

集合对偶律:分别用图文证明

集合几个法则&#xff1a; 求证&#xff1a; 注&#xff1a;右上角C表示此集合的补集/余集 语言描述&#xff1a;A 并 B的补集 A的补集 交 B的补集 A交B的补集 A的补集 并 B的补集 文字证明&#xff1a;&#xff08;思路&#xff1a;证明两个集合相等&#xff0c;可证两集合…

keras实现嘴唇图像autoencoder

本文分享了我在silent speech 项目过程中实现的基于嘴唇图像数据集的autoencoder自编码器。输入输出都是64∗6464*6464∗64的嘴唇灰度图。自编码器由编码解码两个部分构成&#xff0c;同时实现了利用checkpoint在每个epoch运算时&#xff0c;自动保存测试集loss更小的模型。 数…

远程导表

exp ibmscm1/ibmscM123112.35.32.77:1532/JD3 file/home/scmimp.dmp tablesS4I_BPM.ACT_DE_MODEL url: jdbc:oracle:thin:112.35.32.77:1532:JD3 username: ibmscm1 password: ibmscM123 exp ibmscm1/ imp/exp user/pwd//host:port/sid fileurl exp 用户名/密码数据库…

historyReverser array reverse

historyReverser & array reverse "use strict";/**** author xgqfrms* license MIT* copyright xgqfrms** description historyReverser* augments Reverse 逆向 / Recursive 递归* example* link**/const historyReverser (datas [], text , debug false)…

pip国内加载速度慢解决方法

在国内使用pip安装包时有时会发现安装速度非常慢&#xff0c;甚至连接不上源。 为了加快pip的下载速度&#xff0c;我们可以主动使用 -i命令来切换到国内源。 下面放出实测好用的国内源 : 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http:…

oracle--导出、导入blob类型的字段

oracle--导出、导入blob类型的字段 blob是oracle中的一个数据类型&#xff0c;保存的是压缩后的二进制形式的大数据。 数据迁移如果涉及到blob字段&#xff0c;都不好处理&#xff0c;因为无法用常规方法进行操作&#xff0c;如&#xff1a;使用select查看该字段&#xff0c;…

Feign Hystrix (HystrixCommonKey) 设置单独接口的超时时间和FallBack

Feign设置单独接口的超时时间和FallBack(HystrixCommonKey) HystrixCommonKey生成方法&#xff1a;类名#方法名(入参类型) final class Default implements SetterFactory { Override public HystrixCommand.Setter create(Target<?> target, Method method…

深度学习分布式训练小结

分布式训练本质上是为了加快模型的训练速度&#xff0c;面对较为复杂的深度学习模型以及大量的数据。单机单GPU很难在有限的时间内达成模型的收敛。这时候就需要用到分布式训练。 分布式训练又分为模型并行和数据并行两大类。 1. 数据并行 数据并行在于将不同batch的数据分别…

scrapy框架的理解

在每一次学习一个新东西之前&#xff0c;需要知道的几个问题。这个东西是什么(what),怎么使用(how)&#xff0c;为什么(why) scrapy的概念&#xff1a;Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的框架。 scrapy的作用&#xff1a;通过少量代码实现快速抓取…

MAC配置JCO,与找不到sapjco3异常

①到jco官网下载jco压缩包&#xff0c;解压 ②把libsapjco3.jnilib 放到一个文件夹中 把该路径配置到环境变量中 ③项目运行有可能会出现异常&#xff1a;找不到 sapjco3 &#xff1b; 第一种解决方式&#xff1a;配置虚拟机参数&#xff1a;-Djava.library.path之前环境变量路…

You must install pydot and graphviz for plotmodel to work报错如何处理

本文主要记录windows-anaconda环境下关于使用tensorflow.keras.utils.plot_model()方法时提示安装pydot 和 graphviz的解决方法。 pydot的安装非常简单&#xff0c;进入anaconda python环境中&#xff0c;用pip进行安装就可以了。 graphviz包的安装就要稍显复杂一些。 首先我们…