P8844 [传智杯 #4 初赛] 小卡与落叶

· · 题解

询问即求 dfs 序在一段区间,深度在一段后缀的结点数量。

静态二维数点,经典的做法是主席树。不过本题中 dfs 序一维是区间,深度一维是前后缀,可以在数点时以深度为第一维,以 dfs 序为第二维。这样,将询问离线下来挂载到对应第一维前缀处,加点时按第一维有序,每次加入一个点时回答当前前缀处的询问,这只需要查询此时第二维的区间信息即可。时间复杂度 O(n \log n),空间复杂度 O(n)