RMQ ST演算法模板

2022-08-18 21:18:13 字數 337 閱讀 7592

rmq:範圍最小值問題。給出乙個n個元素的陣列a1,a2,...,an,設計乙個資料結構支援查詢操作query(l,r):計算min。

每次用乙個迴圈來求最小值顯然不夠快快,字首和的思想也不能提高效率,這時候st演算法就派上用場了,它預處理的時間是o(nlogn),但是查詢只需要q(1),而且常數很小。

令dp[i][j]表示從i開始的,長度為2^j的一段元素中的最小值,遞推公式:dp[i][j]=min

模板:(^ ^一次預處理,一輩子不用擔憂)

void rmq_init(const vector &a)

int rmq(int l,int

r)

簡單講RMQ ST演算法

假如我們要求區間的最大值,怎麼辦 用一位陣列搞定 沒事,我們有rmq。今天略講講rmq的st演算法,非常水,希望大家都能學會。我們設fi,j 表示區間 i,i 2j 1 的最大值。對於狀態轉移,我們可以將區間 i i 2 j 1 看作 i i 2 j 1 1 和 i 2j 1 i 2 j 1 兩個區...

rmq ST演算法(矩陣最值)

已知某矩陣中的值已經確定,需求矩陣中某個小矩陣的最值 st演算法 我們可以將每一行看作一維的rmq maxx i j k 表示 第i行 j,j 1模板 include include include using namespace std const int n 1e3 7 const int in...

記筆記記筆記 RMQ ST演算法

1.概述 rmq range minimum maximum query 即區間最值查詢,是指這樣乙個問題 對於長度為n的數列a,回答若干詢問rmq a,i,j i,j n 返回數列a中下標在i,j之間的最小 大值。這兩個問題是在實際應用中經常遇到的問題,下面介紹一下解決這兩種問題的比較高效的演算法...