给你数列a,问你对它作m次求前缀异或和之后的新数列是什么. 考虑a1对最终生成的数列的每一位的贡献,仅仅考虑奇偶性, 当m为2的幂次的时候,恰好是这样的 2^0 1 1 1 1 1 ... 2^1 1 0 1 0 1... 2^2 1 3个0 1 3个0 ... 2^3 1 7个0 1 7个0 ... 于是,从做了i次操作之后的序列,变换到做了i+2^k次操作之后的序列,可以轻松地通过 for i = 1 to n-2^k a(i+2^k) := a(i+2^k) xor a(i) [*] 这样…