UOJ Logo kczno1的博客

博客

O(N)构造虚树

2017-01-19 19:05:32 By kczno1

我做过的题里,都是读进来许多询问,之后节点总个数是O(N)的。 对每个询问,我们要将节点按dfs序排序,之后求出相邻两点的lca。 这两步都是nlogn的,也都可以离线做到O(n)。 排序,由于值域是1-n的,可以全部插到一个值域的数组里,记录是哪个询问的,再插回来就行了。 排完序后,哪些点需要求lca我们是知道的,于是可以用tarjan来求lca。

评论

Sengxian
能不能解释下为什么「哪些点需要求lca我们是知道的」,不是维护右链的时候需要插入 LCA 吗,怎么离线啊。。。 或许用欧拉序列 + O(n) 的 RMQ 可以做到 LCA 线性查询?
hzr01
@kczno1 orz
hzr01
那其实好多虚树题都可以去掉一个 log 啊

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。