#P3060. [传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)

    ID: 1202 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>LCA前缀和差分树形数据结构Special JudgeO2优化最近公共祖先传智杯

[传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)

题目背景

本题是 P8200 的较难版本,两道题目的解法略有不同。本题和 P8200 在题意上的区别在于本题给定树上的点权,而不是边权。

小智生活在「传智国」,这是一个有 nn 个城市的国家,各个城市由 n1n-1 条道路相连。

每个城市都有一个财富指数 wiw_i ,我们定义,小智从城市 aa 走到城市 bb 的代价是 disa,b=upath(a,b)wu\mathrm{dis}_{a, b} = \bigoplus \limits_{u \in \mathrm{path}\left(a, b\right)} w_u,其中 \bigoplus 表示按位异或(如果你不知道什么是按位异或,请参见题目下方的提示/说明),path(a,b)\mathrm{path}\left(a,b\right) 表示 aabb 的简单路径上的点集(包括 aabb)。也即 disa,b\mathrm{dis}_{a, b} 表示将 aabb 的简单路径上所有点写作 u1,u2,u3,u_1, u_2, u_3, \dots 后,求 wu1wu2wu3w_{u_1} \bigoplus w_{u_2}\bigoplus w_{u_3} \dots 的结果。

有一天,小智获得了去参加传智杯的机会,他在前往比赛地的路上想到了一个问题,但他好像不会做,于是他把这个题告诉了你。聪明的同学,你可以帮帮他吗?

题目描述

小智说:「由于我们的国家只有 nn 个城市和 n1n-1 条道路,那么我们的国家就相当于是一棵树。我在想,在我们的国家中,是否存在城市满足『到城市 aa 的代价和到城市 bb 的代价的异或等于 kk』。好难哦,我想不出来,你能帮帮我吗?」

也就是说,给定城市 a,ba, b 和整数 kk,请你计算是否存在城市 tt 满足 dist,adist,b=k\mathrm{dis}_{t, a} \bigoplus \mathrm{dis}_{t, b} = k

输入格式

第一行有两个整数 nnmm,表示国家的城市数和询问的个数。

第二行有 nn 个整数 wiw_i,表示 ii 号城市的财富指数。

接下来 n1n-1 行,每行有两个整数 x,yx, y,表示城市 xx 与城市 yy 有一条边相连。

接下来 mm 行,每行有三个整数 a,b,ka, b, k,表示小智从城市 aa 走到城市 bbkk 的含义与题目描述一致。

输出格式

mm 行,每行一个整数。

对于第 ii 个询问,如果存在至少一个城市 tt 满足要求,则输出 Yes

如果不存在任何一个城市满足条件,则输出 No

输出字符串大小写不敏感,例如,YesyESYESyes 等都算作 Yes

5 3
2 6 8 1 5
1 2
1 3
2 4
2 5
1 2 4
2 3 12
2 3 10
nO
No
YeS
5 10
93 97 100 93 93
2 1
3 2
4 3
5 1
5 2 93
4 1 93
3 2 100
3 2 100
2 3 9999998
1 2 93
2 3 97
1 2 93
2 3 97
4 3 93
no
nO
yEs
yEs
No
yEs
yeS
YES
yES
yes

提示

相关概念解释

「树」:树是一个有 nn 个结点和 n1n-1 条边的无向简单连通图。

「按位异或」:按位异或是一个二元运算,步骤是将两个数的二进制位按位比较,相同为 00,不同为 11 。例如:35=(011)2(101)2=(110)2=63 \bigoplus 5 = (011)_2 \bigoplus (101)_2 = (110)_2 = 6

样例 1 解释

下图为传智国的地图。

t{1,2,3,4,5}\forall t \in \{1, 2, 3, 4, 5\},都不可能有 dist,1dist,2=4\mathrm{dis} _{t,1} \bigoplus \mathrm{dis}_{t, 2} = 4dist,2dist,3=12\mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 12,于是输出 No

而取 t=4t=4,有 dist,2dist,3=10\mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 10,于是输出 Yes

数据规模与约定

对于所有测试点,保证 1<n5×1051 < n \leq 5 \times 10^51m5×1051 \leq m \leq 5 \times 10^50wi1×1070 \leq w_i \leq 1\times 10^7

对于每次询问,保证 1a,bn1 \leq a,b \leq naba \neq b0k1×1070 \leq k \leq 1\times 10^7

提示

  • 请注意常数因子对程序效率造成的影响。
  • 对于两个 x,y107x, y \leq 10^7xyx \bigoplus y 可能大于 10710^7,请特别注意这一点。