[CF888G]Xor-MST【Trie】【分治】【启发式合并】

>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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值