二維RMQ模板

2022-06-11 20:42:09 字數 862 閱讀 9086

int main()

for (int i = 0; (1

<< i) <= n; i++) }}

}

因為i == 0時的**和 i != 0 && j != 0時的一樣 所以就合併了

i  !=0 && j != 0時

查詢:詢問的話,也要稍加改變,一維rmq返回的是一段區間的最值,而二維的rmq需要返回的乙個矩陣的最值,所以返回的時候要注意,所返回的一定要構成乙個矩陣

按照一維rmq的思路來做的話,二維的就要返回四個值的最值了(假設詢問的是(x1, y1), (x2, y2)這個矩陣內的最值) 

那麼應該返回的是 

m1 = dp[x1][y1][k1][k2] 

m2 = dp[x2 - (1 << k1 ) + 1][y1][k1][k2] 

m3 = dp[x1][y2 - (1 << k2) + 1][k1][k2] 

m4 = dp[x2 - (1 << k1) + 1][y2 - (1 << k2) + 1][k1][k2] 

這四個值再去最值即可

//

本來一維rmq詢問的時候是乙個區間,現在變成了乙個矩形,所以需要四個角度

大約就是這樣。。。手殘 見諒。。

以上模板是求最大值  求最小值 該max為min即可

二維RMQ問題

前置知識 一維rmq及其拓展 對於乙個n m n m的矩陣,每個格仔有乙個值,有q q個詢問,每次詢問你乙個子矩陣中的最大值。1 n,m 500,q 1061 n,m 500 q 1 06每次花子矩陣大小的複雜度去查詢。複雜度最壞o q n m o q n m 我們用n 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...

二維幾何模板 二維幾何基礎

二維幾何模板 include include include include include include include include include using namespace std 二維幾何基礎 struct point typedef point vector const doub...