HDU 3234 Exclusive-OR(加权并差集)

高速串行通信中的信号完整性与均衡技术解析 信号完整性是高速数字系统设计的核心挑战,涉及信号在传输过程中的失真控制。其核心原理是通过均衡技术补偿信道损耗,包括前馈均衡(FFE)消除码间干扰(ISI),判决反馈均衡(DFE)抑制噪声干扰。这些技术在PCIe和DDR等高速接口中具有重要工程价值,PCIe采用全速率CDR和自适应均衡,而DDR则通过Training流程实现类似功能。实际应用中需结合PCB设计、电源完整性和封装协同优化,典型场景包括Gb/s级串行链路和内存接口的信号重建。 阅读详情

Exclusive-OR

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3300    Accepted Submission(s): 909


Problem 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 ask you some questions.

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

 

Input
There will be at most 10 test cases. Each case begins with two integers n and Q (1 <= n <= 20,000, 2 <= Q <= 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.
 

Source
2009 Asia Wuhan Regional Contest Hosted by Wuhan University

题意:
对于n个数a[0]~a[n-1],但你不知道它们的值,通过逐步提供给你的信息,你的任务是根据这些信息回答问题

I P V :告诉你a[P] = V
I P Q V:告诉你a[P] XOR a[Q] = V
Q K P1..PK:询问a[P1]^a[P2]^...a[PK]的值

思路:
很经典的并查集题目
r[a]记录的是a与其父亲节点的异或值
通过并查集合并的过程同时更新路径上的r值
令fa,fb分别是a,b,的父亲节点
我们知道r[a] = a^fa,r[b]=b^fa,a^b=c
那么在合并fa,fb的时候,令fb为fa的父节点
那么就有r[fa]=fa^fb
而r[a]=a^fa,所以fa=a^r[a]
同理fb=b^r[b]
所以r[fa] = r[a]^r[b]^a^b = r[a]^r[b]^c
当然对于一个节点合并问题不好解决,此时可以添加一一个新节点n作为根节点,使得n的值为0,那么任何值与0的异或都是本身
这样一来合并问题就解决了

然后对于查询而言,对于n是根节点的我们不需要考虑,但是对于不是以n为跟节点的,根节点的值被重复计算了,这个时候我们要统计根节点被统计的次数,如果是奇数次,那么必然是无法确定的了

<span style="font-size:18px;"> #include<iostream>
 #include<cstdio>
 #include<algorithm>
 #include<cmath>
 #include<cstring>
 using namespace std;
 const int maxn=20005;
 int fa[maxn],d[maxn];
 int n;
 struct node
 {
     int a,p;
     bool operator<(const node& b)const{
        return p<b.p;
     }
 }quy[30];
 int find(int x){
    if(x==fa[x]) return x;
    int y=find(fa[x]);
    d[x]=d[x]^d[fa[x]];
    return fa[x]=y;
 }
 bool Union(int a,int b,int v)
 {
     int pa=find(a);
     int pb=find(b);
     if(pa==pb){
        return (d[a]^d[b])==v;
     }
     if(pa==n) swap(pa,pb);
     fa[pa]=pb;
     d[pa]=d[a]^d[b]^v;
     return true;
 }
 int query(int k)
 {
     for(int i=0;i<k;i++)
        quy[i].p=find(quy[i].a); //cout << quy[i].p << endl;
     int l=0;
     int ans=0;
     sort(quy,quy+k);
     while(l<k){
        int r=l;
        while(r<k-1 && quy[r+1].p==quy[l].p) r++;
        int num=r-l+1;
        if(quy[l].p!=n && (num&1)) return -1;
        for(int i=l; i<=r; i++) ans^=d[quy[i].a];
        l=r+1;
        //cout << -1 << endl;
     }
     return ans;
 }
 int main()
 {
     char str[100];
     int Q,cas=0;
     while(~scanf("%d%d",&n,&Q) && n+Q)
     {
         for(int i=0; i<=n;i++) fa[i]=i,d[i]=0;
         printf("Case %d:\n",++cas);
         int killid=-1,kk=0;
         while(Q--){
            scanf("%s",str);
            if(str[0]=='Q'){
               int k;
               scanf("%d",&k);
               for(int i=0;i<k;i++) scanf("%d",&quy[i].a);
               if(killid !=-1) continue;
               int ans=query(k);
               if(ans==-1) puts("I don't know.");
               else printf("%d\n",ans);
            }
            else {
                kk++;
                gets(str);
                if(killid!=-1) continue;
                int a,b,c;
                int t=sscanf(str,"%d%d%d",&a,&b,&c);
                int res;
                //cout << t  << endl;
                if(t==2){
                    res=Union(a,n,b);
                }
                else{
                    res=Union(a,b,c);
                }
                if(!res) killid=kk;
            }
         }
         if(killid != -1){
                printf("The first %d facts are conflicting.\n",kk);
         }
         printf("\n");
     }
     return 0;
 }
</span>


IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误 本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。 阅读详情

相关推荐

带你学习Android中的ContentObserver

通过使用,开发者可以有效地监听系统设置的变化,例如屏幕亮度等。这种机制使得应用能够动态响应系统设置的更改,提升用户体验。在实现需要与系统设置交互的应用时,合理使用是非常重要的。

执剑人 1311

HDU 3234 Exclusive-OR 扩展并查集

这个题坑了我两小时,查了半天,最后发现自己一直都弄错了运算符的优先性。val[p]^val[q]!=v是错的,应该写成((val[p]^val[q])!=v),异或运算符优先性比关系运算符==低#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;algorithm&gt; using namespace std; int roo...

编程开发资料库 178

ESP32内存优化实战:关闭WiFi/LWIP功能释放37KB IRAM的隐藏技巧

本文针对ESP32开发中IRAM内存不足的难题,提供了一种通过关闭WiFi和LWIP协议栈的IRAM优化功能来释放宝贵内存空间的实战技巧。该方法最高可释放约37KB的IRAM,有效解决复杂项目(如WiFi+BLE+语音识别)的编译失败问题,并详细阐述了配置步骤、性能权衡与测试验证方法。

redis7keeper的博客 129

HDU 3234 - Exclusive-OR(并查集)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=3234 题意: n个数,R条指令。 I u w : 表示第u个数是w。 I u v w: 表示第u和v 个数的异或值是 w。 Q k (k个数的下标):输出这k的数异或值。 思路: 并查集中,设fa[u]为u的祖先,val[u]为u与根异或的值。 若 fa[u] = fu, fa[v]

Halo 649

MLX90640 热成像 STM32

MLX90640 热成像

zhaocundang's blog 5006

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 249

hdu3234 Exclusive-OR(带权并查集)

题目 题目叙述来自思路来源,懒得敲了2333…… 思路来源 https://blog.youkuaiyun.com/XY20130630/article/details/50638922 题解 考虑,把Xp XOR Xq=v这样的关系建成边,不妨p为root,则q与其相连,且置q的置为v,代表一种相对关系 后续,带权并查集维护的,也都是到祖先的这条链的异或值 Xp=v的一类型操作,将其视为Xp XOR 0=v, 由于原先的点的下标为0到n-1,则建一个虚点n,作一类型的0点, 考虑合并过程,.

小衣同学的博客 407

MoveIt2项目想换掉KDL求解器?试试这个trac_ik插件(附源码编译避坑指南)

本文详细介绍了如何在MoveIt2项目中用trac_ik插件替代KDL求解器,提升机械臂运动学求解的效率和成功率。内容涵盖环境准备、源码编译避坑、项目集成及性能调优,特别适合需要高精度控制的协作机械臂应用场景。通过实测数据对比,trac_ik在求解时间和奇异点处理上显著优于传统KDL求解器。

weixin_30730053的博客 692

HDU-3234 Exclusive-OR 异或带权并查集

题目描述 现在有n个数,X0,X1,…,Xn-1,你并不知道这n个数的大小,然后接下来有Q个询问,询问的格式如下 1) I p v, 告诉你 Xp = v 2) I p q v, 告诉你 Xp ^ Xq = v 3) Q k Xi, Xi+1, ..,Xi+k-1, 让你求Xi ^ Xi+1 ^..^ Xi+k-1的值 如果输入的第i个I条件和前面已知的冲突,则输出The first %d facts is conflicting.,并不输出后面的询问。 如果Q条件可以求取则输出对应的值,否则输出I do

每天完成一个小目标 626

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 473

Vue2 - 详细实现解析Markdown内容生成侧边栏Toc目录索引,识别文章内容根据大标题/小标题自动生成多级文章目录,点击目录导航时跳转到文章内容对应的锚点位置带过渡动画,滑过锚点时高亮对应标题

vue2,nuxt2,Markdown,目录,文章目录锚点,滚动高亮导航文字,根据页面滚动高亮显示目录的侧边栏,自动提取标题生成右侧目录,vuemarkdown解析并生成目录,滚动页面的时候文章目录跟着选中效果,侧边栏滚动跟随页面,右边目录固定,左边内容可以滚动并且与左边目录联动,实现监听滚动,锚点定位,文章目录滚动跟随高亮,右边菜单点击目录滚动到对应标题,报错,渲染失败,文章内容,读取#标题符号,自动生成一个目录树,自动生成Toc目录,博客内容生成目录索引,资讯文章,生成锚点目录树TOC,详细示例代码教

🏆 前端领域优质创作者 3668

[HDU 3234] Exclusive-OR

<br />一、题目描述<br />http://acm.hdu.edu.cn/showproblem.php?pid=3234<br />存在n个正数。<br />题目逐渐给出信息或询问。<br /><br />要求处理。<br />如果中途出现冲突,输出有冲突,其余语句全部忽略。<br />详见原题。<br /> <br />二、准备知识<br />对于a,b,c有:a xor b == c 和 a xor c == b 和 b xor c == a 等价<br /> <br />二、题目分析<br /

Dango's happy life 2004

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hdu 3234 Exclusive-OR 题解(并查集,思维)

该死的期末复习终于结束了。。。 暑假来了\color{#ff0000}{暑假来了}暑假来了!!! 所以我就珂以非常开心的写博客了。 原题链接: hdu 题意简述 多组数据。你有一个没有确定的数列。有一些操作,格式: I p v第ppp个是vvv(如果某个位置有很多个值,就是矛盾的) I p q v(没错也是I,所以要用sscanf判一下空格数量)第ppp个异或第qqq个为vvv(这个异或值也可能会...

LightningUZ的博客 521

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU 3234 Exclusive-OR(并查集)

转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526       by---cxlove  题目:给出N个数,给出一些条件,x[i]=v或者 x[i]^x[j]=k,然后给出一些询问,x[a1]^x[a2]…… http://acm.hdu.edu.cn/showproblem.php?pid=3234

窝不是爱酱,喵~~~~ 3304

SAP B1中文培訓教材_SDK

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

HDU 3234 Exclusive-OR [并查集]

我的内心是崩溃的 Debug了一个小时,结果,少了一个括号((v[x]^v[y]) != w) (v[x]^v[y] != w)这两个表达式的结果是不一样了 = = 位运算的优先级低我是知道的,没有想到这么低。还能过Sample,这就让人很崩溃了。以后凡是有位运算的,一律打括号! 这题很有意义,要好好写题解,不过先游个泳,冷静一下。Code//约定 a[i] 表示 a[i]的值 #includ

more time 394

HDU 3234 Exclusive-OR

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3234 Exclusive-OR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3299    Accepted

Silenceneo的ACM坎坷之路(已退役) 796

hdu 3234 Exclusive-OR

Exclusive-OR 并查集的好题 这里由于每次给定的是xi, xj的关系,并且可以会给定xi的值,所以我们需要3个数组来存储每个值的信息:v[i]表示i的值,p[i]表示i的父亲节点,d[i]表示v[i] ^ v[p[i]] 的值。   首先是并查集的查询操作。这里我们不仅需要压缩路径,更新x与根节点的关系,这里可以由抑或操作的传递性直接计算出来,同时如果已知x或者已知树根的值时,我们

BootStar 786

hdu 3234 Exclusive-OR[并查集] 施工中没写完233

Exclusive-ORTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3333 Accepted Submission(s): 923Problem Description You are not given n non-neg

NULL 500

HDU 3234 Exclusive-OR 并查集变形

/* 转自:http://www.cppblog.com/Yuan/archive/2010/09/02/125667.html?opt=admin稍许改写 有n(n<=20000)个未知的整数X0,X1,X2Xn-1,有以下Q个(Q<=40000)操作: I p v :告诉你Xp=v I p q v :告诉你Xp Xor Xq=v Q k p1 p2 …

Join Hands 1847

HDU3234Exclusive-OR(并查集)与HDU3038相似

Exclusive-OR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2383    Accepted Submission(s): 667 Problem Description You are not given

青山绿水之辈 专栏 957

hdu 3234 Exclusive-OR 有权并查集

Exclusive-OR<br />Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)<br />Total Submission(s): 302    Accepted Submission(s): 92<br /><br />Problem DescriptionYou are not given n non-negative integers X0, X1, ..., Xn-1 less

kongming_acm的专栏 916

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

hdu 3234 Exclusive-OR (并查集)

Problem - 3234   题意不难理解,就是给出一些断言,以及一些查询,回答查询或者在找到断言矛盾以后沉默不做任何事。   这题其实就是一个并查集的距离存储问题,只要记录并查集元素的相对值以及绝对值就可以了。 代码如下: 1 #include <iostream> 2 #include <algorithm> 3 #include &...

weixin_30539625的博客 100

HDU 3234 Exclusive-OR Regional的题就是硬啊卧槽

带权并查集,思路很清晰,代码很难看。 对于 I u v ,分以下几种情况不合法。 1.num[u] 已确定 && num[u]  != v 。 2.num[u] 的根已确定,若num[u] == v与根节点有冲突。 若合法,则修改num[u] 且 修改num[u]的根节点的信息。 对于 I u v w   ,分以下几种情况不合法。 1.num[u] ,num[v] 均已确定

自在飞花 1226
上一篇: HDU 3236 Gift Hunting(0-1背包变异)
下一篇: Codeforces Round #367 (Div. 2)
hellohelloC
博客等级 码龄12年 15粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值