第一行給出乙個數字n,接下來n+1行,每行給出乙個數字ai,(0<=i<=n<=1e6)
接來給出乙個數字q(q<=7000),代表有q個詢問
每組詢問格式為a,b即詢問從輸入的第a個數到第b個數,其中的最大值是多少
如題所述
10012323
4321
050 10
2 43 7
7 98 8
434這題就怎麼說呢,範圍怎麼大,暴力顯然超時,st表表示起來也簡單,就是一直把乙個區間分成兩塊,求兩塊的最大值再比較(怎麼那麼像區間dp),然後這種劃分又要用到倍增,就需要二進位制,所以理解起來還是有一定的難度(有dp的預處理)32
**:
1 #include2 #include3using
namespace
std;
4char ch; bool
ok;5
void read(int &x)
10int a[1000001],n,m,f[1000001][21
],x,y,now;
11void st(int
n)12
18int
main()
1933 }
ST表 (求區間最大 最小值)
st表的功能很簡單 它是解決rmq問題 區間最值問題 的一種強有力的工具 它可以做到o nlogn 預處理,o 1 是查詢最值 像線段樹是o logn 的查詢 st表是利用的是倍增的思想 拿最大值來說 我們用st i j 表示,從i位置開始的2 j個數中的最大值,例如st i 1 表示的是i位置和i...
區間最大最小值 ST表
這是一道st表經典題 靜態區間最大值 請注意最大資料時限只有0.8s,資料強度不低,請務必保證你的每次查詢複雜度為 o 1 o 1 若使用更高時間複雜度演算法不保證能通過。如果您認為您的 時間複雜度正確但是 tle,可以嘗試使用快速讀入 inline int read while isdigit c...
數列區間最大值 RMQ問題(ST演算法模板)
輸入一串數字,給你 m個詢問,每次詢問就給你兩個數字 x,y,要求你說出 x 到 y 這段區間內的最大數。輸入格式 第一行兩個整數 n,m 表示數字的個數和要詢問的次數 接下來一行為 n 個數 接下來 m 行,每行都有兩個整數x,y 輸出格式 輸出共 m 行,每行輸出乙個數。樣例樣例輸入 10 2 ...