题目大意:
一维数轴上给你若干条线段,每个线段有一个值 v v v,然后 m m m次操作。要求支持线段插入和区间查询最大值减最小值.强制在线
n , m ≤ 1 e 5 , 数 轴 ∈ [ 1 , 3000 ] n,m\leq1e5,数轴\in[1,3000] n,m≤1e5,数轴∈[1,3000]
题目思路:
本题核心思想:区间覆盖问题转换成二维平面前缀问题
一个区间 [ x , y ] [x,y] [x,y]看成二维矩阵中的一个点 ( x , y ) (x,y) (x,y).则
①修改 [ x , y ] [x,y] [x,y]看成单点修改
②查询
[
x
,
y
]
[x,y]
[x,y]即查询
l
≥
x
∧
r
≤
y
l\geq x \wedge r \leq y
l≥x∧r≤y,类似下图的区域:
将
x
x
x看成
n
−
x
n-x
n−x.如下图所示:
那么区间查询即转换成:二维矩阵前缀查询
又因为二维矩阵大小很小。我们可以直接建二维数组,求前缀最值即可。
复杂度带两个log.
离线算法:CDQ分治
如果这题离线了,可以建三维坐标 ( t , l , r ) (t,l,r) (t,l,r)代表分别时间和坐标.具体做法待补.