時間限制: 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,...