算法 {区间最值查询}
区间最值查询-一维
算法
动态
线段树;
静态
RMQ;(他的算法名字 就叫做Range Maximum Query
);
区间最值查询-二维
算法
静态(查询前缀)
每次查询[0,0] - [i,j]
这左上角区域里的 最值 (注意必须是[0,0]
);
用Ma(x,y) 表示 所有(<=x,<=y)的最值
, 那么因为最值满足重复覆盖性质 即Ma(x,y) = max{ A(x,y), Ma(x-1,y), Ma(x,y-1)}
, 因此可以O(N^2)
构造出来 (这就有点类似于二维前缀和的构造);
@DELI;
例题: @LINK: https://leetcode.cn/problems/maximum-difference-score-in-a-grid/
;
对于任意路径a-b-c-d
他的值等于(b-a) + (c-b) + (d-c) = d-a
即只于起点|终点相关; 因此对于任意点(x,y)
获取其左上角区域里的最小值;