int main()因為i == 0時的**和 i != 0 && j != 0時的一樣 所以就合併了for (int i = 0; (1
<< i) <= n; i++) }}
}
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...