[CF 893F] Subtree Minimum Query

Description

给定一棵有根树,点 \(x\) 有点权 \(a[x]\),多组询问,每次询问以 \(x\) 为根的子树中的所有满足 \(dep[y]-dep[xi]<=ki\)\(y\) 中,最小的 \(a[y]\)\(n\leq10^5,q\leq10^6\)。强制在线。

Solution

按照 \(dfs\) 序重新编号,这个题等价于求编号在 \([L[x],R[x]]\),深度在 \([dep[x],dep[x]+k]\) 中的点权最小值。

注意到编号在 \([L[x],R[x]]\) 深度在 \([0,dep[x])\) 的点不存在,所以询问等价于编号在 \([L[x],R[x]]\),深度在 \([1,dep[x]+k]\) 的点有多少,这样就可以按照深度为第一关键字建主席树,每次求某一版本的区间最值。

Code

猜你喜欢

转载自www.cnblogs.com/fly-in-milkyway/p/10024416.html