P2420 让我们异或吧

题目描述

异或是一种神奇的运算,大部分人把它总结成不进位加法.

在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么:

(A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣

好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径上所有边权的异或值。

输入输出格式

输入格式:

输入文件第一行包含一个整数N,表示这颗开心的树拥有的结点数,以下有N-1行,描述这些边,每行有3个数,u,v,w,表示u和v之间有一条权值为w的边。接下来一行有一个整数M,表示询问数。之后的M行,每行两个数u,v,表示询问这两个点之间的路径上的权值异或值。

输出格式:

输出M行,每行一个整数,表示异或值

说明

对于40%的数据,有1 ≤ N,M ≤ 3000;

对于100%的数据,有1 ≤ N ,M≤ 100000。


积累题:

引理:异或的逆运算是异或。

证明:前导知识,异或具有结合律和交换律,这点很好证明。

转换:任取整数\(a,b\),令\(c=a \ xor \ b\),证明\(a=c \ xor \ b\)

\(a=(a \ xor \ b) \ xor \ b=a \ xor \ (b \ xor \ b)=a \ xor \ 0=a\)

用到了两个小性质,\(a \ xor \ 0=a\),\(a \ xor \ a=0\)

这题随意选根像前缀和处理到根节点距离一样处理即可。

对两点\(a,b\),答案即为\(d[a] \ xor \ d[b]\),\(d[i]\)为到根的每条边的值异或起来


code:

#include <cstdio>
const int N=100010;
int head[N],w[N<<1],cnt=0,to[N<<1],next[N<<1];
int n,m,d[N],used[N];
void add(int u,int v,int w0)
{to[++cnt]=v;next[cnt]=head[u];w[cnt]=w0;head[u]=cnt;
}
void dfs(int now)
{used[now]=1;for(int i=head[now];i;i=next[i]){int v=to[i];if(!used[v]){d[v]=d[now]^w[i];used[v]=1;dfs(v);}}
}
int main()
{scanf("%d",&n);int u,v;for(int i=1;i<n;i++){scanf("%d%d%d",&u,&v,w);add(u,v,w[0]),add(v,u,w[0]);}dfs(1);scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);printf("%d\n",d[u]^d[v]);}return 0;
}

2018.6.15

转载于:https://www.cnblogs.com/butterflydew/p/9187455.html

洛谷 P2420 让我们异或吧 解题报告相关推荐

  1. 洛谷 P2420 让我们异或吧

    P2420 让我们异或吧 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B ...

  2. 洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告

    P2893 [USACO08FEB]修路Making the Grade 题目描述 A straight dirt road connects two fields on FJ's farm, but ...

  3. 洛谷 P3258 [JLOI2014]松鼠的新家 解题报告

    P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...

  4. 【洛谷】NOIP2018原创模拟赛DAY1解题报告

    点此进入比赛 T1:小凯的数字 题意:给定q个l,r,求l(l+1)(l+2)...(r-1)r模9的结果 很显然,这是道考验数(运)学(气)的题目 结论:输出\((l+r)*(r-l+1)\over ...

  5. 洛谷 P4390 [BOI2007]Mokia 摩基亚 解题报告

    P4390 [BOI2007]Mokia 摩基亚 题目描述 摩尔瓦多的移动电话公司摩基亚(\(Mokia\))设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户 ...

  6. 洛谷 P3924 康娜的线段树 解题报告

    P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她\(OI\). 今天康娜学习了一种叫做线段树的神奇魔法,这种 ...

  7. 洛谷 P4964 绫小路的特别考试 解题报告

    P4964 绫小路的特别考试 题目背景 这世界上「胜利」便是一切.无关乎过程. 要付出多少牺牲都无所谓.只要最后我「胜出」那就行了. 题目描述 一场新的特别考试来临了,这次的考试内容是(wan e d ...

  8. 【洛谷】P1425.小鱼的游泳时间 解题报告

    题目描述 伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的.这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己 ...

  9. 洛谷 P4551 最长异或路径

    题目描述 给定一棵 nn 个点的带权树,结点下标从 11 开始到 NN .寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有节点权值的异或. 输入输出格式 输入格式: ...

最新文章

  1. Asp.net调用RAR压缩 解压文件
  2. opencv Mat类
  3. 松开手,你可以拥有更多
  4. 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 7.)(笔记)解释器 interpreter 解析器 parser 抽象语法树AST
  5. Spring中基于Java的配置@Configuration和@Bean用法
  6. abb机器人建立工件坐标系_ABB机器人大地坐标系修改案例
  7. Angular 基于自定义指令的内容投影 content projection 问题的单步调试
  8. 【渝粤教育】国家开放大学2018年秋季 2503T学前儿童健康教育 参考试题
  9. ST-LINK USB communication error解决方法
  10. windows server 2008 + IIS 7.5实现多用户FTP(多账号对应不同目录)
  11. Confluence 6 € 欧元字符集不能正常显示
  12. mixin风格的bases class
  13. java例程练习(东软笔试题——n阶平面魔方)
  14. 学计算机平面设计软件有哪些,计算机平面设计软件有哪些
  15. 手动卸载CAD 删除残留文件 清理遗留的文件
  16. python给矩阵赋值_python 实现矩阵旋转
  17. 我的区块链著作《区块链的数学原理》,今天正式出版和发行
  18. Windows远程桌面使用本地USB打印机
  19. 中文繁简互换以及获取中文字符串首字母
  20. 浅谈Interpreter解释器模式

热门文章

  1. jQuery实现Ajax
  2. php加速缓存器opcache,apc,xcache,eAccelerator
  3. 教你成为全栈工程师(Full Stack Developer) 一-各显神通总结八大类编程语言的区别...
  4. SUID、SGID、粘滞位
  5. 听飞狐聊JavaScript设计模式系列11
  6. SDNLAB技术分享(二):从Toaster示例初探ODL MD-SAL架构
  7. iOS截取视频预览图,截图方向错误的解决
  8. 详细介绍MPLS路由协议的相关概念知识
  9. Python 程序员必知必会的开发者工具
  10. busybox date 时间的加减