uva12232 - Exclusive-OR 加权并查集

LD14激光雷达与STM32F103C8T6(标准库)获取雷达360度数据(1) 阅读详情

You are not given n non-negative integers X0, X1,..., Xn-1 less than 220, but they do exist, and their values never change.

I'll gradually provide you some facts about them, and ask you some questions.

There are two kinds of facts, plus one kind of question:


FormatMeaning
I p vI tell you Xp = v
I p q vI tell you Xp XOR Xq = v
Q k p1 p2...pkPlease tell me the value of Xp1 XOR Xp2 XOR...XOR Xpk

Input 

There will be at most 10 test cases. Each case begins with two integers n and Q (1$ \le$n$ \le$20, 000, 2$ \le$Q$ \le$40, 000). Each of the following lines contains either a fact or a question, formatted as stated above. The k parameter in the questions will be a positive integer not greater than 15, and the v parameter in the facts will be a non-negative integer less than 220. The last case is followed by n = Q = 0, which should not be processed.

Output 

For each test case, print the case number on its own line, then the answers, one on each one. If you can't deduce the answer for a particular question, from the facts I provide you before that question, print ``I don't know.", without quotes. If the i-th fact (don't count questions) cannot be consistent with all the facts before that, print ``The first i facts are conflicting.", then keep silence for everything after that (including facts and questions). Print a blank line after the output of each test case.

Sample Input 

2 6 
I 0 1 3
Q 1 0 
Q 2 1 0
I 0 2 
Q 1 1 
Q 1 0 
3 3 
I 0 1 6
I 0 2 2
Q 2 1 2
2 4 
I 0 1 7
Q 2 0 1
I 0 1 8
Q 2 0 1
0 0

Sample Output 

Case 1: 
I don't know. 
3 
1 
2 

Case 2: 
4 

Case 3: 
7 
The first 2 facts are conflicting.

  告诉你Xp=v或者Xp^Xq=v,询问一些Xi的异或值。

  如果没有Xp=v,只告诉你Xp^Xq=v就容易一些。只需要把Xp和Xq合并,设w[i]为Xi和它父节点的异或值,合并的时候注意w[i]=w[i]^w[p[i]]。查询的时候Xp1^Xp2...^Xpk=w[Xp1]^rootp1^w[Xp2]^rootp2...^w[Xpk]^rootpk,所以只要把w[Xpi]都异或上,由于root的具体值都是不知道的,于是若所有root都是偶数个,抵消了,答案就是w[Xpi]的异或。否则是不能算出答案的。

  告诉你Xp=v怎么办呢?这是个难点,要设置一个节点N,假设Xpn=0。把p和N合并,而且要保证N这个点一直是作为根节点。也就是说最后和N一个集合的X的值都是知道的,并且N是根节点。判断root奇偶的时候,若是N作为节点这个root就无所谓,因为这个值是知道的,就是0。也就是说除了N以外作为根的节点若出现奇数次,就无法确定答案。

  注意用异或符号的时候最好打括号。

#include<cstring>
#include<cstdio>
#include<iostream>
#include<climits>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#define INF 0x3f3f3f3f
#define MAXN 20010
#define MAXM 3010
using namespace std;
int N,Q,bug,p[MAXN],w[MAXN];
char str[20];
int find(int x){
    if(p[x]==x) return x;
    int root=find(p[x]);
    w[x]^=w[p[x]];
    return p[x]=root;
}
void Union(int a,int b,int v){
    int x=find(a),y=find(b);
    if(x==y){
        if((w[a]^w[b])!=v) bug=1;   //这里如果不打括号就是错的
        return;
    }
    if(x==N) swap(x,y);      //N要始终作为根节点
    p[x]=y;
    w[x]=w[a]^w[b]^v;
}
int main(){
    freopen("in.txt","r",stdin);
    int cas=0;
    while(scanf("%d%d",&N,&Q),N||Q){
        printf("Case %d:\n",++cas);
        for(int i=0;i<=N;i++) p[i]=i;
        memset(w,0,sizeof(w));
        int k=0;
        bug=0;
        while(Q--){
            int a,b,v;
            scanf("%s",str);
            if(str[0]=='I'){
                k++;
                gets(str);
                if(bug) continue;
                if(sscanf(str,"%d%d%d",&a,&b,&v)==2){
                    v=b;
                    b=N;
                }
                Union(a,b,v);
                if(bug) printf("The first %d facts are conflicting.\n",k);
            }
            else{
                int K,t,ans=0,know=1;
                map<int,int> Map;
                map<int,int>::iterator it;
                scanf("%d",&K);
                while(K--){
                    scanf("%d",&t);
                    int x=find(t);
                    ans^=w[t];
                    Map[x]++;
                }
                if(bug) continue;
                for(it=Map.begin();it!=Map.end();it++) if(it->second%2){
                    if(it->first!=N){
                        know=0;
                        break;
                    }
                }
                if(know) printf("%d\n",ans);
                else printf("I don't know.\n");
            }
        }
        puts("");
    }
    return 0;
}



GD32F105RBT6 keil工程模板 创建GD32F105RBT6的keil初始基础工程,未来的所有外设驱动都是基于这个基础工程进行扩展。 阅读详情

相关推荐

【Qt实战项目】记事本完整项目

效果图如下所示: 全部代码如下: #include “notepad.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.showMaximized(); return a.exec(); }

YIZHILIUSHA2020的博客 575

UVa12232 Exclusive-OR(加权并查集)

UVa12232 Exclusive-OR(加权并查集)

多看多听多总结 353

魔百和CM211-1刷Armbian全流程:从安卓盒子到Linux服务器的完美变身

本文详细介绍了如何将魔百和CM211-1机顶盒刷入Armbian系统,实现从安卓盒子到Linux服务器的完美变身。涵盖硬件兼容性验证、固件选择、刷机流程、系统优化及常见问题解决,特别适合技术爱好者低成本搭建家庭NAS或开发环境。

weixin_30329623的博客 238

UVA 12232 Exclusive-OR 并查集

UVA 12232 题意:I p v,表示把p设为v,I p q v,表示p^q设为v,Q K p1,p2,...pk 表示求p1^p2^...^pk的值 思路:经典并查集,设r[ a ]为a和a的父亲的异或(由于路劲压缩,它的父亲就是根节点),设a的父亲为fa,b的父亲为fb,则 r[ a ]=a^fa,r[ b ]=b^fb,如果题目设a^b=c,那么找到a,b的父亲(就是根)fa,fb...

ccsu_cat 339

中兴交换机配置SSH登录

SSH是在传统的Telnet协议基础上发展起来的一种安全的远程登录协议。发送和接收数据时, SSH会自动对数据进行加密及解密。相比于Telnet,SSH能防止“中间人”攻击、DNS欺骗、IP 欺骗等,无论是在认证方式或者数据传输的安全性上都有很大的提高。SSH用户认证方式有3种,分别为本地(Local)认证、RADIUS认证和TACACS+认证。以表规划数据为例,说明配置SSH登录的步骤。

才怪的博客 7922

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定

本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。

e3f4g5的博客 640

UVa - 12232 - Exclusive-OR

异或是个比较神奇的位运算,它是两个数相同的位取0,不同的位取1。关于异或操作,有这么两个特点,一个是0 XOR a = a,另一个是a XOR a = 0,这道题根据这两个特点,用到了加权并查集来解。

_____ 877

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

带权并查集--uva12232 Exclusive-OR

X0 ~ Xn-1 共n个数,根据给定的信息,给出询问结果。 已知 I a b c 表示Xa ^ Xb = c,I a c表示Xa = c 询问Q K X1...Xk 求X1 ^ ...^ Xk 的结果。 1.令Xn = 0,将Xa = c转变成Xa ^ Xn = c,所以所有已知的数都和Xn在同一棵树(以n为根) 2.在询问时,X1 ^ ... Xk = Xf1 ^ ..

unintended 283

【DeepSeek实战】1、DeepSeek民用级开发全指南:从0到1掌握AI应用开发与模型蒸馏实战

DeepSeek创新性地打破了传统AI开发的技术壁垒,通过双模型架构(DeepSeek-V3和R1)实现普惠化与专业化并重。其核心优势包括:零代码操作、浏览器直接使用、中文提示词控制及低成本(2元/百万token)。用户通过简单三步(注册-配置-使用)即可快速开启AI之旅,平台提供$50免费额度支持2个月高频使用。 四大核心应用场景: 办公自动化:周报撰写、PPT生成、数据分析一键完成 内容创作:提供爆款标题生成、垂直领域写作模板 学习辅助:支持文档解析、错题讲解、知识图谱构建 生活服务:个性化行程规划

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1734

YOLO26涨点改进 | 全网独家,注意力创新改进篇 | Arxiv2025 | YOLO26引入MSLA多尺度线性注意力模块,高效提取多尺度特征和建模长程依赖,含多种创新改进,助力有效涨点

本文提出了一种多尺度线性注意力模块(MSLA)来优化YOLO26模型。MSLA通过并行使用不同尺寸的深度可分离卷积(3×3至9×9)提取多尺度特征,并结合线性注意力机制高效建模全局依赖关系。该模块显著提升了模型对多尺度目标的检测能力,同时保持了轻量化特性。实验表明,MSLA能有效增强小目标检测和复杂场景下的分割精度。文章详细介绍了MSLA的网络结构、核心优势及实现代码,并提供了两种集成MSLA的YOLO26改进方案,为实时目标检测任务提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 292

uva 12232 - Exclusive-OR(加权并查集)

题目链接:uva 12232 - Exclusive-OR 题目大意:有n个数,一开始并不知道具体的值,现在进行Q次操作。 I u k:au的值为kI u v k:au⨁av=kQ k q1q2…qk:求q1⨁q2…⨁qk 对于Q操作不能确定的话输出"I don't know." 对于I操作矛盾的话则输出是第几条I操作出现矛盾的,并且停止后面所有的操作。 解题思路:加权并查集

不慌不忙、不急不躁 1939

【Bluedroid】BLE连接过程详解

Bluedroid BLE的链接过程包括扫描、连接和通信三个基本步骤。通过这些步骤,中央设备和外围设备之间可以建立起稳定、高效的通信链路,实现数据传输和控制操作。

byte轻骑兵的技术小窝 1875

加权并查集—— uva12232 Exclusive-OR

题目链接:uva12232 Exclusive-OR 分析: 加权并查集的一般思路 戳这里:并查集【NOI2001 Day1 T3】食物链 考虑与父节点的关系rela[p]表示 x[p]^x[father[p]] 与爷爷节点的关系 显然为 rela[p]^rela[father[p]] 于是操作1很好维护,直接合并集合就可以了。 操作2(x[p]=v)怎么办呢? 维护一个虚拟节点n+

INCINCIBLE的博客 651

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WuHan 2009 / UVa 12232 / HDU 3234 Exclusive-OR (异或的性质&加权并查集&合并时保持根结点不变)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3384 1. 对于第一种命令I p v,我们可以虚拟出一个点Xn = 0,那么p^Xn = v,故第一和第二种命令我们可以统一成p^q = v的模式。 2. 记val[i]

AC,∑ndless 1336

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

UVA 12232 - Exclusive-OR(带权并查集)

UVA 12232 - Exclusive-OR 题目链接 题意:有n个数字。一開始值都不知道,每次给定一个操作,I a v表示确认a值为v,I a b v,表示确认a^b = v,Q k a1 a2 a3 ... ak。表示推断这些数字的异或值是否能确定。能确定就输出值,假设有矛盾就停止 思路:带权并查集,权表示和父结点的异或值,那么多数推断的时候,仅仅要...

aofan9566的博客 124

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

uva12232 - Exclusive-OR

带权并查集

ACoder 242

UVa 12232 Exclusive-OR

题目要求处理一组变量间的异或关系,支持两种事实输入(直接赋值或异或关系)和查询操作(求多个变量的异或和)。需要使用带权并查集维护变量间关系,处理冲突检测和查询回答。对于每个查询,根据连通分量分组计算异或和,若无法确定则输出未知。若事实冲突则立即终止处理。时间复杂度主要由并查集操作决定,适用于题目规模限制。

寂静山林 816

UVA12232 - Exclusive-OR(带权并查集)

题目:UVA12232 - Exclusive-OR(带权并查集) 题目大意:给你I P V 代表Xp 的值是V。或者 I P Q V 代表X P ^X i + 1 ^X i+2 ...^X^Q = V;然后给你Q k p1 p2 p3...pk问这些数字的异或值。 解题思路:这题首先要明确 x ^ y = V , x ^ z = W, 那么 y ^ z = V ^ W;  所

1135

Hdu 3234 & Uva 12232 Exclusive-OR

题意很简单,有两个操作,一个是I p q v告诉你 x[p]^x[q]=v,一个是查询k个数的异或和,问是否出现矛盾以及能否确定答案 很经典的并查集问题 首先我们可以虚拟一个根节点x[n]=0,这样所有的I p v都可以转换成 x[p]^x[n]=0.另w[a]=x[a]^x[f[a]]即本身和父节点的异或值, 那么如何合并呢?记fp=f[p],fq=f[q],x[p]^x[q]=v,另f[f

mlzmlz95的专栏 1097

【ICPC-387】uva 12232 Exclusive-OR

点击打开链接uva 12232 思路: 并查集的扩展应用 分析: 1 题目给定三种指令,I p v表示Xp = v, I p q v表示Xp^Xq = v, Q k Xp1 Xp2...Xpk求Xp1^Xp2^...^Xpk的值。 2 对于的异或的性质:1 a^0 = a,2 a^c^b^c = a^b,异或一个数偶数次等于没有异或,因为异或偶数次的值为0,根据性质1那么结果没有影响 3 因此对...

藏经阁 | 玄苦 2288

uva 12232 Exclusive-OR

点击打开链接uva 12232 思路: 并查集的扩展应用 分析: 1 题目给定三种指令,I p v表示Xp = v, I p q v表示Xp^Xq = v, Q k Xp1 Xp2...Xpk求Xp1^Xp2^...^Xpk的值。 2 对于的异或的性质:1 a^0 = a,2 a^c^b^c = a^b,异或一个数偶数次等于没有异或,因为异或偶数次的值为0,根据性质1那么结果没有影响 ...

我是传奇 208

UVA 12232 Exclusive-OR (带权值的并查集)

I don‘t know直接复制网站上的话一直WA,直接复制’是错的。#include #include #include #include #include using namespace std; const int maxn=40000+5; int pa[maxn],w[maxn]; int n,m,conflict; int findset(int x) { if(pa[x]==

qq_33901573的博客 273

UVA 12232 Exclusive-OR(并查集+思想)

题意:给你n个数,接着三种操作: I p v :告诉你 Xp = v I p q v :告诉你 Xp ^ Xq = v Q k p1 p2 … pk:问你k个数连续异或的结果 注意前两类操作可能会出现与之前告诉你的相矛盾,此时输出“The first n(第几个I) facts are conflicting.”接着一直

专注如一的博客 376

UVA - 12232 Exclusive-OR (并查集扩展偏离向量)

Description You are not given n non-negative integers X0, X1,..., Xn-1 less than 220, but they do exist, and their values never change. I'll gradually provide you some facts about them, and as

那些年 1152
上一篇: uva11988 - Broken Keyboard (a.k.a. Beiju Text) 模拟 链表
下一篇: uva10410 - Tree Reconstruction BFS和DFS重建树
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值