P3242 [HNOI2015] 接水果
一眼 dfs 序,转变成每个询问 \((u,v,k)\) 询问 \(l[u] \leq a \leq r[u],l[v] \leq b \leq r[v]\) 的 \((a,b,v)\) 中值第 \(k\) 小的。
这个一眼是个数点对吧,但显然不能直接数。
我们可以二分答案,变成询问矩形内有多少个点,这个可以直接树套树,变成 \(O(n\log^3 n)\)。
这个显然非常不好,考虑怎么去掉一个 log。因为这个做法是在线的,我们一般可以变成离线从而去掉一个 log。
考虑对树套树离线,改成扫描线 + 线段树 / 树状数组,但是因为外面有一个二分,我们并不能提前知道询问是什么,所以不行。
考虑一次二分多个询问,整体二分,就可以了。
复杂度 \(O(n \log^2 n)\)。

浙公网安备 33010602011771号