RMQ問題 1541 例 1 數列區間最大值

2021-09-26 02:17:11 字數 785 閱讀 8447

時間限制: 1000 ms         記憶體限制: 524288 kb

提交數: 757     通過數: 262 

輸入一串數字,給你 m 個詢問,每次詢問就給你兩個數字 x,y,要求你說出 x 到 y 這段區間內的最大數。

第一行兩個整數 n,m 表示數字的個數和要詢問的次數;

接下來一行為 n 個數;

接下來 m 行,每行都有兩個整數 x,y。

輸出共 m 行,每行輸出乙個數。

10 2

3 2 4 5 6 8 1 2 9 7

1 43 8

5

8

對於全部資料,1≤n≤10^5,1≤m≤10^6,1≤x≤y≤n。數字不超過 c/c++的 int 範圍。

//st演算法(當然也可以用線段樹)

#include#define n 1000000+5

using namespace std;

int n,m,f[n][20],a[n];

//f[i][st]表示從i開始,長度為2^st的區間的最大值

//即[i,i+2^st-1] 這個區間

int main()

//預處理

int m= log(n)/log(2)+1; //st的最大值

for (int j=1; j<=m; j++)

} //詢問並回答

while (m--)

return 0;

}

數列區間最大值 RMQ問題(ST演算法模板)

輸入一串數字,給你 m個詢問,每次詢問就給你兩個數字 x,y,要求你說出 x 到 y 這段區間內的最大數。輸入格式 第一行兩個整數 n,m 表示數字的個數和要詢問的次數 接下來一行為 n 個數 接下來 m 行,每行都有兩個整數x,y 輸出格式 輸出共 m 行,每行輸出乙個數。樣例樣例輸入 10 2 ...

筆記 RMQ區間極值問題

專題 區間最小 最大查詢 range minimum maximum query rmq問題 描述 已知長度為l的數列a,詢問區間 l,r 中的最值。若詢問的次數較少,可以用線性的複雜度來查詢,但如果詢問的次數過多且l過大,那麼複雜度就會很高。所以需要更快速的查詢方法。st演算法 預處理o nlog...

RMQ(區間最值問題)

1 概述 lca least common ancestors 即最近公共祖先,是指這樣乙個問題 在有根樹中,找出某兩個結點u和v最近的公共祖先 另一種說法,離樹根最遠的公共祖先 rmq range minimum maximum query 即區間最值查詢,是指這樣乙個問題 對於長度為n的數列a,...