題目:
輸入一串數字,給你 m 個詢問,每次詢問就給你兩個數字 x,y,要求你說出 x 到 y 這段區間內的最大數。
輸入格式
第一行兩個整數 n,m 表示數字的個數和要詢問的次數;
接下來一行為 n 個數;
接下來 m 行,每行都有兩個整數 x,y。
輸出格式
輸出共 m 行,每行輸出乙個數。
資料範圍
1≤n≤105,
1≤m≤106,
1≤x≤y≤n,
數列中的數字均不超過231−1
輸入樣例:
10 2
3 2 4 5 6 8 1 2 9 7
1 43 8
輸出樣例:58
題解:求子區
間最大值
。線段樹
建樹+查
詢。
求子區間最大值。線段樹建樹+查詢。
求子區間最大
值。線段
樹建樹+
查詢。
**:
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x7fffffff
using
namespace std;
const
int n=
1e5+10;
int n,m;
int w[n]
;struct node
;node tr[n*4]
;void
pushup
(int u)
void
build
(int u,
int l,
int r)
;else
;int mid=l+r>>1;
build
(u<<
1,l,mid)
,build
(u<<1|
1,mid+
1,r)
;pushup
(u);}}
intquery
(int u,
int l,
int r)
intmain()
return0;
}
線段樹 數列操作
假設有一列數 1 i n 支援如下兩種操作 1 將 ak 的值加 d k,d 是輸入的數 2 輸出 as as 1 at s,t 都是輸入的數,s t 根據操作要求進行正確操作並輸出結果。輸入格式 輸入檔案第一行乙個整數n 0 n 100000 第二行為 n 個整數,表示 的初始值。第三行為乙個整數...
數列求和 線段樹基礎
線段樹基礎題 操作包括 1.點修改 2.區間修改 3.區間查詢 線段樹基礎 數列求和 include define maxn 10007 數列總個數 define ls l,m,rt 1 define rs m 1,r,rt 1 1 int sum maxn 2 add maxn 2 sum求和,a...
無聊的數列 線段樹
維護乙個數列,支援兩種操作 1 1 l r k d 給出乙個長度等於r l 1的等差數列,首項為k,公差為d,並將它對應加到a l a r 的每乙個數上。即 令a l a l k,a l 1 a l 1 k d,a l 2 a l 2 k 2d a r a r k r l d。2 2 p 詢問序列的...