传送门
解题思路
若强制在线,可以考虑用树剖+主席树,相当于每次询问两个点之间的路径上在 \(i-C_i\) 时刻之前开始搜集情报的人数。
但是这题可以离线,于是可以把询问按照 \(i-C_i\) 离线一下,就可以用线段树/树状数组来维护了。
注意一定要区分原编号和dfn编号。
时间复杂度:\(O(nlog^2n)\)
当然可以优化到一个log:不用树剖。
直接维护dfs序上差分,每次更新一个点相当于更新以它为根的整个子树,每次查询转化为两次单点查询和查询LCA、fa[LCA]的信息。
AC代码
#include
#include
#include
#include
#include
#include
#include
#include