【刷题笔记】P4197 Peaks
题解
想要判断只经过困难值 \(\le x\) 的边能否从 \(u\) 到 \(v\),只需要判断 \(u\to v\) 路径上 最小的最大值 和 \(x\) 的关系,这东西可以在 最小生成树 上维护。
将所有询问的 \(x\) 从小到大排序,这样每次只需要加入 权值 \(x_{i - 1}\) 到 \(x_i\) 的边,保证每条边只会加入 一次。
对每个点以 \(h\) 为下标开一棵动态开点线段树,记录每种 \(h\) 的出现次数,每次 kruskal 合并时,将两棵线段树合并,询问时在线段树上查询区间第 \(k\) 大即可。