rm
q(ra
ngem
inim
umqu
ery)
r mq
(ran
gemi
nimu
mque
ry
),範圍最小值問題。具體表現為一下一類問題:
給出乙個
n n
個元素的陣列 a1
,a2,
…,an
' role="presentation" style="position: relative;">a1,
a2,…
,ana
1,a2
,…,a
n,求解 mi
n(l,
r)m in
(l,r
): 計算 mi
n min
rmqr mq
問題有很多解法,其中較為快捷和簡便的是 ta
rjan
t ar
ja
n的 sp
arse
−tab
les pa
rse−
tabl
e演算法,簡稱 st
s
t表。sp
arse
−tab
les pa
rse−
tabl
e演算法基於倍增思想,整個演算法由預處理和查詢兩部分組成,分別描述一下:
由此可見,sp
arse
−tab
les pa
rse−
tabl
e演算法思想簡單,好寫,是求解 rm
q rmq
問題的首選演算法。
具體實現的時候還要注意一點,每次用 po
w(2,
x)p ow
(2,x
)計算 2x
2
x是非常浪費時間的。由於計算機內部使用的是二進位制,我們可以用 (1
<(
1< 表示 2x 2 x。namespace rmq
int query(int l, int r)
}
RMQ 問題及 ST 表
rmq range minimum maximum query 問題指的是一類對於給定序列,要求支援查詢某區間內的最大 最小值的問題。很顯然,如果暴力預處理的話複雜度為 o n 2 而此類問題資料又往往很大,不僅會爆時間,陣列也存不下。我們需要一種能夠 o n log n 甚至 o n 預處理的資料...
ST表求解靜態RMQ 二維RMQ 模版
rmq range minimum query 範圍最小值問題。具體表現為一下一類問題 給出乙個 n 個元素的陣列 a1,a2,a na1,a2,an a1,a2,an 求解 min l,r min l,r min l,r 計算 min al,a l 1,ar minmi nal,al 1 arrm...
RMQ演算法 ST表
題目大意就是給你兩個長度為n的序列讓你找到乙個盡可能大的下標p使得1 p之間的任意兩個區間l r都滿足rmq u,l,r 相等其實就是最小下標相同 rmq range minimum maximum query 問題是指 對於長度為n的數列a,回答若干詢問rmq a,i,j i,j n 返回數列a中...