博客园同步
原题链接
简要题意:
给定一个长度为 n n n 的序列 a a a,你需要将其分为若干组,使得每一组的异或之和最小。求这个最小值。
实际上这题是个结论题。
先考虑一个问题:对于一个数 x x x,唯一的一组 S S S,你会选择 将 x x x 单分一组还是加入 S S S 呢?
由于异或的结合律,所以我们可以抽象地假设一手,设 S S S 中所有元素的异或值为 m m m.
这个问题就变成了, x + m x+m x+m 和 x ⊕ m x \oplus m x⊕m,哪个小?
再抽象一手, a + b a+b a+b 和 a ⊕ b a \oplus b