www 被大佬们吊|

wscqwq

园龄:2年粉丝:2关注:3

XorDistances

[ABC202E] Count Descendants

考虑一个判断某个点 v 是否为另一个点 u 后代的方法:令 dfnv 表示 vdfs 序,令 outu 表示离开 u 的子树时的最新的 dfs 序,由于一个子树内的 dfs 序是连续的,所以只要 dfnudfnvoutu

考虑将深度同一层的点按照 dfs 序为权值放到数组中,然后每次对于 D 层,二分找在 dfnu,outu 之间的点数即可。

复杂度 O(qlogn)

还有一种解法,我们可以将每个点的深度按照 dfs 序为下标放到一个数组里,然后每次查询的就是一段区间内等于某个数的个数。可以考虑莫队,复杂度 O(nq)

代码二分

代码分块

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17598778.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(17)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起