「NOIP2019模拟题day2」bit

「NOIP2019模拟题day2」bit_第1张图片
考虑树 dp,设 f i f_i fi 表示不修改的时候 i i i 号点上的数字,显然这个可以
O ( n ) O(n) O(n)dp得到。
g i g_i gi 表示若 i i i 号点的数字反转,即 i i i 号点的数字变成了 f i x o r 1 f_i xor 1 fixor1 之后,
1 1 1 号点的数字是多少。
那么 g i g_i gi 的转移直接考虑他父亲的另一个儿子的数字和他反转的数字运
算之后和原来是不是一样,如果一样就没有影响,否则 g i = g f a gi = g_{fa} gi=gfa
如果父亲只有一个儿子直接 g i = g f a g_i = g_{fa} gi=gfa
总复杂度 O ( n ) O(n) O(n)

你可能感兴趣的:(「NOIP2019模拟题day2」bit)