语言 题解
语言 题解
本题其实没有什么好说的,主要是提供一种强大的,神秘的,诡异的,跑得飞快的,逆天的,唐诗的双 \(\log\) 做法
首先考虑将答案分类,分成跨过这个语言的 lca 的和没跨过的
对于没跨过的,可以发现就是对于每个点,求能扩展到的深度最低的节点,这个直接暴力做就是 \(O(n)\) 的,所以说我们直接考虑第二种情况
发现可以对每个 lca 分别做,很容易发现一个点能配对的有和自己配对的一条链,还有所有子树里的链的并集,发现可以直接建出来虚树之后链推平,线段树合并
现在我们就做完了,复杂度 \(O(n\log^2n)\),但是有一个 \(\log\) 是树剖的,另一个可以压位优化,整体常数极小,即使不使用压位优化也能轻取洛谷最优解
对于正解,发现是维护子树虚数大小,支持删除一个点,合并一堆点,这个直接dfn相邻两个点距离加和做完了,线段树维护即可