Xor-MST

Xor-MST

这道题其实是一种最小生成树算法名曰 Boruvka 的算法,但是平时还是 Kruskal 算法用的说,相信大家也是由它想起的。

根据套路,由于要求的是异或边权之和的最小值,果断构建 01 trie。我们将样例画出来

我们可以对这颗树进行 dfs,可以看出两个点的 LCA 越深,那么它们合并代价就越小。上图中,先合并 \(2,3\),再将 \([1],[2,3]\) 合并(需要让 \(1\) 在右子树中走,尽量走某一位和自己一样的)。右边则是合并 \(4,5\),最后是 \([1,2,3],[4,5]\)。根据合并过程可知,如果一个点有两个儿子,当它回溯时,可以立即合并它的两个儿子。这里我们可以用启发式合并,尽量让左右儿子中子树更小者在另一边子树中探索,尽量往与自己一样的地方走。

复杂度暂时未知。

code

posted @ 2023-06-08 21:50  wscqwq  阅读(20)  评论(0编辑  收藏  举报