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

2021-10-01 02:49:29 字數 711 閱讀 5288

輸入一串數字,給你 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

#include#include#include#define n 100005

#includeusing namespace std;

const int m=25;

int h[n][m],a[n];//h[i][j]表示從i位起的2^j個數中的最大數

int main()

for(int j=1; j<=log2(n); j++)

for(int i=1; i+(1<

h[i][j]=max(h[i][j-1],h[i+(1<

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

return 0;

}

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

時間限制 1000 ms 記憶體限制 524288 kb 提交數 757 通過數 262 輸入一串數字,給你 m 個詢問,每次詢問就給你兩個數字 x,y,要求你說出 x 到 y 這段區間內的最大數。第一行兩個整數 n,m 表示數字的個數和要詢問的次數 接下來一行為 n 個數 接下來 m 行,每行都有...

1 3565 問題 A 數列區間最大值

題目描述 有一串含有n個數的數列,有m個詢問,每個詢問有兩個數字x,y,求出x到y這段區間內的最大值。輸入 第一行為乙個n和m分別表示數字的個數和詢問的個數,第二行為n個數。接下來m行,每行都有兩個整數x,y。1 x,y 1e5 輸出 輸出共m行,每行輸出乙個數。樣例輸入 10 2 3 2 4 5 ...

st表求區間最大值

第一行給出乙個數字n,接下來n 1行,每行給出乙個數字ai,0 i n 1e6 接來給出乙個數字q q 7000 代表有q個詢問 每組詢問格式為a,b即詢問從輸入的第a個數到第b個數,其中的最大值是多少 如題所述 1001 2323 4321 050 10 2 43 7 7 98 8 434 32這...