luogu#P8201. [传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)
[传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)
题目背景
本题是 P8200 的较难版本,两道题目的解法略有不同。本题和 P8200 在题意上的区别在于本题给定树上的点权,而不是边权。
小智生活在「传智国」,这是一个有 个城市的国家,各个城市由 条道路相连。
每个城市都有一个财富指数 ,我们定义,小智从城市 走到城市 的代价是 $\mathrm{dis}_{a, b} = \bigoplus \limits_{u \in \mathrm{path}\left(a, b\right)} w_u$,其中 表示按位异或(如果你不知道什么是按位异或,请参见题目下方的提示/说明), 表示 到 的简单路径上的点集(包括 和 )。也即 表示将 与 的简单路径上所有点写作 后,求 的结果。
有一天,小智获得了去参加传智杯的机会,他在前往比赛地的路上想到了一个问题,但他好像不会做,于是他把这个题告诉了你。聪明的同学,你可以帮帮他吗?
题目描述
小智说:「由于我们的国家只有 个城市和 条道路,那么我们的国家就相当于是一棵树。我在想,在我们的国家中,是否存在城市满足『到城市 的代价和到城市 的代价的异或等于 』。好难哦,我想不出来,你能帮帮我吗?」
也就是说,给定城市 和整数 ,请你计算是否存在城市 满足 $\mathrm{dis}_{t, a} \bigoplus \mathrm{dis}_{t, b} = k$。
输入格式
第一行有两个整数 ,,表示国家的城市数和询问的个数。
第二行有 个整数 ,表示 号城市的财富指数。
接下来 行,每行有两个整数 ,表示城市 与城市 有一条边相连。
接下来 行,每行有三个整数 ,表示小智从城市 走到城市 , 的含义与题目描述一致。
输出格式
输出共 行。
对于第 个询问,如果存在至少一个城市 满足要求,则输出 Yes
。
如果不存在任何一个城市满足条件,则输出 No
。
输出字符串大小写不敏感,例如,Yes
、yES
、YES
、yes
等都算作 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
提示
相关概念解释
「树」:树是一个有 个结点和 条边的无向简单连通图。
「按位异或」:按位异或是一个二元运算,步骤是将两个数的二进制位按位比较,相同为 ,不同为 。例如:$3 \bigoplus 5 = (011)_2 \bigoplus (101)_2 = (110)_2 = 6$。
样例 1 解释
下图为传智国的地图。
,都不可能有 $\mathrm{dis} _{t,1} \bigoplus \mathrm{dis}_{t, 2} = 4$,$\mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 12$,于是输出 No
;
而取 ,有 $\mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 10$,于是输出 Yes
。
数据规模与约定
对于所有测试点,保证 ,,。
对于每次询问,保证 且 ,。
提示
- 请注意常数因子对程序效率造成的影响。
- 对于两个 , 可能大于 ,请特别注意这一点。