題目背景
這是一道st表經典題——靜態區間最大值
請注意最大資料時限只有0.8s,資料強度不低,請務必保證你的每次查詢複雜度為 o(1) o(1)
題目描述
給定乙個長度為 n n 的數列,和 m m 次詢問,求出每一次詢問的區間內數字的最大值。
輸入輸出格式
輸入格式:
第一行包含兩個整數 n, m n,m ,分別表示數列的長度和詢問的個數。
第二行包含 n 個整數,依次表示數列的第 i 項。
接下來 m 行,每行包含兩個整數 表示查詢的區間
輸出格式:
輸出包含 m m 行,每行乙個整數,依次表示每一次詢問的結果。
輸入輸出樣例
輸入樣例#1: 複製
8 8
9 3 1 7 5 6 0 8
1 6
1 5
2 7
2 6
1 8
4 8
3 7
1 8
輸出樣例#1: 複製
9 9
7 7
9 8
7 9
說明n<=100000 m<=1000000
st表,倍增思想o(nlogn)預處理,o(1)查詢。
#include
#include
#include
using
namespace
std;
const
int maxn = 100005;
int n,m,f[maxn][20],t,a[maxn];
inline
void st()
int main()
}
ST表 (模板) 洛谷3865
題目背景 這是一道st表經典題 靜態區間最大值 請注意最大資料時限只有0.8s,資料強度不低,請務必保證你的每次查詢複雜度為 o 1 o 1 題目描述 給定乙個長度為 n n 的數列,和 m m 次詢問,求出每一次詢問的區間內數字的最大值。輸入輸出格式 輸入格式 第一行包含兩個整數 n,m n,m ...
模板 ST表 洛谷P3865
題目背景 這是一道st表經典題 靜態區間最大值 請注意最大資料時限只有0.8s,資料強度不低,請務必保證你的每次查詢複雜度為 o 1 題目描述 給定乙個長度為 n 的數列,和 m 次詢問,求出每一次詢問的區間內數字的最大值。輸入輸出格式 輸入格式 第一行包含兩個整數 n,m 分別表示數列的長度和詢問...
洛谷 P3865 模板 ST表
st表可以解決rmq問題,即區間最大值 最小值 速度快 預處理的時間複雜度是o nlogn 查詢的時間複雜度是o 1 不支援修改操作 st表借助於乙個陣列實現 st i j 表示從i為起點,2j個長度的區間最大值。顯然,st i 0 a i 即從i開始1個單位長度的最大值就是i。然後是乙個雙層迴圈,...