给定 n n n 个点,第 i i i 个点有一个非负点权 a i a_i ai。 这 n n n 个点连成了一张无向完全图,其中第 i i i 个点和第 j j j 个点连的边长度为 a i a_i ai 按位异或 a j a_j aj。现在要求出这张无向完全图的最小生成树。 1 ⩽ n ⩽ 200000 , 0 ⩽ a i ⩽ 1073741823 1 \leqslant n \leqslant 200000,0 \leqslant a_i \leqslant 1073741823 1⩽n⩽200000,0⩽ai⩽1073741823 时间限制2s,空间限制512MB。
位运算问题常用贪心。将 a a a 排序并分为高位为 0 0 0和高位为 1 1 1两类。那么整个图的最小生成树则为高位为 0 0 0的数构成的最小生成树并上高位为 1 1 1的最小生成树再加上再两类中个选一个数的最小边权。高位相同的答案可以递归,高位不同时将高位为 0 0 0的数加入01字典树中,再将高位为 1 1 1的数挨个在字典树中跑,从高位选择到低位,找出最小边权。 时间复杂度 O ( n l o g 2 2 m a x a ) O(nlog_2^2max_a) O(nlog22maxa),空间复杂度 O ( n l o g 2 m a x a ) O(nlog_2max_a) O(nlog2maxa)。
