解题思路
为了最小化总校验开销 S=∑1≤i<j≤n(ai⊕aj),可以利用异或运算按位独立的性质。对于二进制下的第 t 位(权重 2t),设该位为 1 的编号个数为 ct,则这一位对 S 的贡献为 ct×(n−ct)×2t。为了最小化该贡献,希望每一位的 ct 尽可能接近 0 或 n,即所有编号在该位上尽量保持一致。尤其对于高位而言,一旦出现 0 与 1 混杂,代价会很大。
基于以上分析,一种最优策略是:
- 找到最小的 2 的幂 p=2k,使得 p≥n。
- 令分配的 n 个编号为 ai=p+(i−1),其中 i=1,2,…,n。
- 此时所有编号的二进制第 k 位(即 p 所对应的位)都为 1,更高位全为 0,因此这些高位对 S 的贡献为零。