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)\)

posted @ 2023-02-21 16:54  PYD1  阅读(34)  评论(0)    收藏  举报