首页 > 其他分享 >「2023 集训队互测」举办乘凉州喵,举办乘凉州谢谢喵

「2023 集训队互测」举办乘凉州喵,举办乘凉州谢谢喵

时间:2022-11-10 08:56:30浏览次数:46  
标签:拆成 乘凉 举办 离线 答案 2023 重链

一个询问 \((u,v)\),假设两个点的 \(lca\) 是 \(c\)。考虑差分,发现答案可以拆成 \(1 → u\) 链的答案 + \(1 → v\) 的答案 - \(1 → c\) 的答案 \(\times 2\) + \(c → c\) 的答案。

单点的答案很好处理,离线下来点分治,或者写一个点分树。

因此现在只需要处理每个点到 \(1\) 的各类答案。

考虑离线处理,很明显可以重链剖分,拆成若干个重链,重链要算的是重链上所有轻儿子的答案。

发现这样会算多,就是在走轻边的时候,下面那个子树已经算过了,但又算了一遍,要减去这个子树的答案,这个可以写一个线段树合并继续离线处理。

然后最后是算从链首开始的一段树链的轻儿子的答案,这个可以离线下来 dsu 算。

然后就做完了。

标签:拆成,乘凉,举办,离线,答案,2023,重链
From: https://www.cnblogs.com/Reanap/p/16875862.html

相关文章