题目链接
题目类型:树链剖分好题+水题
题目分析
题目大意
给出一棵树,每个点有一个权值,有两种操作,一种操作是把一个顶点的值替换,另一种是查询两个点之间的简单路径上的点是否都只出现过偶数次,如果有存在出现过奇数次,则输出出现奇数次个数的那个数。保证最多只有一个数出现奇数次
解析
树链剖分模版题,把线段树单点更新区间查询的板子改为异或即可,如果简单路径上的值异或和为0
的话,则全都为偶数次,否则,则必然有一个数出现奇数次,又因为只有这一个数,所以就是异或的结果。不过有一个小trick,节点的值可以为0,如果出现一次0
的话,应该输出0
,所以,我们需要把所有的值全都加上1
,在输出的时候再减1
。
代码
1 |
|