>Link
luogu CF888G
luogu T207971
>Description
有一张 n n n 个点的无向完全图。其中点 i i i 的点权为 a i a_i ai。
两个点 u , v u,v u,v 之间的边的边权为 a u a_u au。
求出这张图的最小生成树。
>解题思路
看到求类似异或的最小值,就会想到用Trie
求最小生成树,要找当前最小的两两异或值
发现在Trie树上,如果两两叶子节点的LCA深度越深,这两个点的异或值就越小,那这两个点就越优先连起来
所以我们在一个节点,找以这个节点为LCA要连起来的两个点,如果这个节点左右子树都非空,那这两个子树内部肯定优先连好了,即这两个子树已经是两个连通块
我们现在找一条价值最小的边把两棵子树连起来就行了。考虑启发式合并,枚举叶子节点数量更少的一棵子树,在另一棵子树的trie上匹配它,找到最小值,然后连起来。这其实就是一个分治的过程
时间复杂度 O ( n l o g 2 n ) O(nlog^2n) O(nlog2n