P4747 [CERC2017]Intrinsic Interval
题目大意
给一个排列,值域连续段定义为对于排列的一个区间,这个区间元素的值排序后是连续的。
每次询问一个区间,问包含这个区间的最短值域连续段是哪个
数据范围
(1 le n, q le 1 imes 10^5)
解题思路
去年不理解,现在感觉好多了
首先经典结论值域连续段的必要条件是 (max-min=R-L)
再进行观察,发现如果两个值域连续段相交,那么交集也是值域连续段。
那么就可做多了,枚举右端点,第一个能包含询问区间的的值域连续段就是答案了。
用大根堆维护左端点,每次取出最大的左端点,在线段树上二分得到最近的可以包含它的值域连续段,然后没了。