線段樹應用(建樹 區間查詢之最大值)

2021-10-01 07:26:46 字數 776 閱讀 4523

【題目描述】

老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3…編號,然後不定時的問管家問題,問題是這樣的:在a到b號賬中最多的一筆是多少?為了讓管家沒時間作假他總是一次問多個問題。

【輸入格式】

輸入中第一行有兩個數m,n,分別表示有m(m<=100000)筆賬,n個詢問(n<=100000)。

第二行為m個數,分別是賬目的錢數

後面n行分別是n個問題,每行有2個數字說明開始結束的賬目編號。

【輸出格式】

輸出為每個問題的答案。具體檢視樣例。

【程式**】

#includeusing namespace std;

const int maxn=100001;

int n,m,l,r,a[maxn],segmax[maxn*4];//線段樹陣列要開大4倍

void build(int cur,int l,int r)

}int get_max(int cur,int l,int r,int x,int y)

int main() {

cin>>n>>m;

for(int i=1; i<=n; i++) cin>>a[i];

build(1,1,n);

while(m--) {

cin>>l>>r;

cout<【參考文獻】

hdu I hate it 區間最大值 線段樹

include define maxn 200001 define lson l,mid,rt 1 define rson mid 1,r,rt 1 1 int max maxn 2 int n,m int max int a,int b void pushup int rt 要理解好更新的定義,不...

線段樹 區間修改 最大值

最大值 區間修改 總時間限制 10000ms 單個測試點時間限制 1000ms 記憶體限制 65536kb 描述 在n 1 n 100000 個數a1 an組成的序列上進行m 1 m 100000 次操作,操作有兩種 1 1 lr c 表示把a l 到a r 增加c c的絕對值不超過10000 2 ...

數列區間最大值 線段樹

acwing 1270 time limit 2s memory limit 64mb problem description 輸入一串數字,給你 m 個詢問,每次詢問就給你兩個數字 x,y要求你說出 x 到 y 這段區間內的最大數。input output 輸出共 m 行,每行輸出乙個數。samp...