#0016. Nim
虽然我tle了但我还是来写题解了
题目大意:
给一棵树,两种操作:改变点的权值 和 查询以u到v的路径所有点权值作为每堆石子数玩nim是否有必胜策略。
n,m<=5e5
题目解法:
首先nim必胜当且仅当所有石子的数量的异或和不为0.所以这道题就转化带修的路径异或和求解。
注意到u->v的路径异或和等价于(u->root)^(v->root)^a[lca(u,v)]. 我们考虑每个点维护到根的异或和,那么每次修改只会对一个点的子树内所有点造成影响。排完dfs序以后题目转化为单点查询区间修改。考虑到本题n给的比较大最好不要用线段树,而是处理成差分用bit维护。
复杂度O(n+m log n)
顺便讲一下反nim(最后拿的人输), 有两种先手必胜的情况:
(1) 各堆石子数目异或结果不为零,且至少有一堆石子数目大于1
(2) 各堆石子数目异或结果为零,且所有堆石子数目均为1;

浙公网安备 33010602011771号