「赛前备战」NOIp2020-提高 图论训练
博主太菜,可能会炸联赛,于是恶补一下 QAQ 题目比较基础,动态更新 Tags 生成树 , 最短路 , 差分约束 , 树的直径与重心 , LCA , 树链剖分 , 拓扑序 , 强连通分量 , 割点 , 桥 , 点双连通分量 , 边双连通分量 , 2-SAT , 二分图 , 正/负环 , 最小环 Content 「Codeforces 888G」Xor-MST 生成树 「AtCoder JSC2019 Qual E」Card Collector 生成树 「Codeforces 888G」Xor-MST update - 2020.8.4 此题需要用到一个叫 Borůvka 的最小生成树算法,大致就是对现在的每一个连通块都找一遍的最短边,最后每个连通块择优,将这些边全部连上。这样复杂度之正确的原因可以参考启发式合并, \(O(|E|\log |V|)\) 。 对于此题,我们以可以用这样的思路来“择优合并”,即选取两个结点 \(u, v\) ,使得 \(a_u \oplus a_v\) 最小,然后合并。现在如何找到这个最小的就是个问题。 对于两个二进制数 \(x = (10001010)_2,y = (10000110)_2\) ,前 \(4\) 位相同,即 \(\text{lcp} = 4\) ,那么异或一次前四位都是 \(0\) 。我们优先考虑二进制下 \(\text{lcp}\)