P4747 [CERC2017]Intrinsic Interval

P4747 [CERC2017]Intrinsic Interval

题目大意

给一个排列,值域连续段定义为对于排列的一个区间,这个区间元素的值排序后是连续的。

每次询问一个区间,问包含这个区间的最短值域连续段是哪个

数据范围

\(1 \le n, q \le 1 \times 10^5\)

解题思路

去年不理解,现在感觉好多了

首先经典结论值域连续段的必要条件是 \(max-min=R-L\)

再进行观察,发现如果两个值域连续段相交,那么交集也是值域连续段。

那么就可做多了,枚举右端点,第一个能包含询问区间的的值域连续段就是答案了。

用大根堆维护左端点,每次取出最大的左端点,在线段树上二分得到最近的可以包含它的值域连续段,然后没了。

posted @ 2020-11-18 17:07  Hs-black  阅读(167)  评论(3编辑  收藏  举报