题解:

题目要求求出u和v两点在最短路径上的异或和。怎么确定最短路径呢?,就是U到LCA(u,v)的路径加上V到LCA(u,v)。根据异或的性质,如k^a^a=k,即异或一个值两边等于原数值。

所以维护一个数组dp[i]指的是根节点s到点i的异或和,所以答案应该是dp[u]^dp[v]^dp[lca[u,v]]^arr[lca[u,v]]其中arr是每个点的weight.

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1E5+;
vector<ll >ve[N];
ll arr[N];
bool pre[N];
ll fa[N];
ll dp[N];
ll bits[N];
ll depth[N];
ll father[N][];
void dfs1(ll x,ll y){//y是x的父亲
fa[x]=y;
dp[x]=dp[y]^arr[x];
for(ll i=;i<ve[x].size();i++){
ll c=ve[x][i];
if(c!=y) {
dfs1(c,x);
}
}
}
void bt()
{
bits[]=;
for(ll i=;i<=;i++) bits[i]=bits[i-]<<;
}
void dfs(ll x,ll y){//x是y的儿子节点
depth[x]=depth[y]+;
father[x][]=y;
for(ll i=;i<=;i++) father[x][i]=father[father[x][i-]][i-];
for(ll i=;i<ve[x].size();i++){
ll c=ve[x][i];
if(c!=y) {
dfs(c,x);
}
}
}
ll lca(ll x,ll y){//设x比y深
if(depth[x]<depth[y]) swap(x,y);
ll dif=depth[x]-depth[y];
for(ll i=;i>=;i--){
if(bits[i]<=dif){
dif-=bits[i];
x=father[x][i];
}
}
if(x==y) return x;
for(ll i=;i>=;i--){
if(depth[x]>=bits[i]&&father[x][i]!=father[y][i]){
x=father[x][i];
y=father[y][i];
}
}
return father[x][]; }
int main(){
ll n;
cin>>n;
for(ll i=;i<=n;i++) cin>>arr[i];
ll x,y;
for(ll i=;i<n;i++){
cin>>x>>y;
pre[y]=;
ve[x].push_back(y);
ve[y].push_back(x);
}
bt();
dfs1(,);
dfs(,);
ll q;
cin>>q;
for(ll i=;i<=q;i++){
ll x,y;
cin>>x>>y;
ll k=dp[x]^dp[y];
ll a=lca(x,y);
k=k^arr[a];
cout<<k<<endl;
}
return ;
}

Xor Path 牛客,HPU--C--LCA的更多相关文章

  1. 牛客网 272B Xor Path(树上操作)

    题目链接:Xor Path 题意:每个顶点的点权为Ai,任意两点路径上点权异或和为Path(i,j),求所有Path(i,j)和. 题解:考虑每个顶点被用到的次数,分以下三种情况: 1.本身和其他顶点 ...

  2. 牛客练习赛32 B题 Xor Path

    链接:https://ac.nowcoder.com/acm/contest/272/B来源:牛客网 题目描述 给定一棵n个点的树,每个点有权值.定义表示  到  的最短路径上,所有点的点权异或和. ...

  3. 牛客小白月赛13 小A的最短路(lca+RMQ)

    链接:https://ac.nowcoder.com/acm/contest/549/F来源:牛客网 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个 ...

  4. 【牛客OI赛制测试赛3】 毒瘤xor

    牛客OI赛制测试赛3 毒瘤xor 传送门 题面,水表者自重 Solution 前缀和简单题(挖坑待补) 代码实现 #include<stdio.h> #define int long lo ...

  5. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)

    链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...

  6. 牛客练习赛26 D xor序列 (线性基)

    链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  7. 牛客网训练赛26D(xor)

    题目链接:https://www.nowcoder.com/acm/contest/180/D 线性基的学习:https://www.cnblogs.com/vb4896/p/6149022.html ...

  8. 牛客NOIP暑期七天营-TG1 赛后题解

    目录 牛客NOIP暑期七天营-提高组1 A-最短路 题目描述 link 题解 代码 B-最小生成链 题目描述 link 题解 代码 C-最小字典最短路 题目描述 link 题解 Update 牛客NO ...

  9. 牛客暑期ACM多校 第七场

    链接:https://www.nowcoder.com/acm/contest/145/C来源:牛客网 C .题目描述 A binary string s of length N = 2n is gi ...

随机推荐

  1. [Docker8]Dockerfiles

    Comment INSTRUCTION arguments FROM 基于哪个base镜像 RUN 执行命令并创建新的镜像层,run经常用于安装软件包 MAINTAINER 镜像创建者 copy 将文 ...

  2. python-文本字符串

    2019-12-05 14:41:36 一.Unicode 编码问题一直都是文本处理的时候的大难题,python2中的编码异常混乱,本章节主要讨论python3中的编码情况. python3 str的 ...

  3. 【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoundsException、ArrayStoreException、ArithmeticException等没有异常堆栈信息

    今天工作中,临时Fix一个bug,一看日志“java.lang.ClassCastException: null”相当懵逼,没有详细堆栈信息,这咋整.虽然根据上下文可以推测代码的大致位置,但不敢拍板确 ...

  4. c#委托、泛型委托和匿名方法

    题外话:别指望看第一遍书就能记住和掌握什么——请看第二遍.第三遍. 本人女猿一枚,2年工作经验,喜欢钻研,喜欢创新,闲暇之余喜欢写写博客,深知自身能力薄弱,如表达错误.不当之处请园友们多多指出,互相交 ...

  5. 不同label样本画图——颜色分配plt.cm.Spectral

    不同label样本画图——颜色分配plt.cm.Spectralhttps://blog.csdn.net/wang_zuel/article/details/102940092 关于plt.cm.S ...

  6. 医学图像dcm2d切片文件转3dnii文件

    安装 conda: conda install -c conda-forge dicom2nifti pip: pip install dicom2nifti 更新 conda: conda upda ...

  7. Dome 多人人脸识别 face_recognition

    Dome 多人人脸识别 face_recognition 注意 face_recognition 依赖 face_recognition_models 中文字体文件需要自己下载 1.多人人脸识别 # ...

  8. python文件封装成*.exe

    python文件封装成*.exe文件(单文件和多文件) 环境:win10 64位 python3.7 原文: https://www.cnblogs.com/jackzz/p/9431923.html ...

  9. Java实验五参考答案

    1.找错误 btOK.setOnAction( new EventHandler<ActionEvent> { public void handle (ActionEvent e) { S ...

  10. 对oracle里面clob字段里面xml的增删改查学习

    这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下 首先我们先建测试表 CREATE TABLE EFGP_23 ...