線段樹 C 區間最大值 II

2021-09-10 06:42:25 字數 1168 閱讀 4382

給乙個有n個整數的序列a1, a2, a3, ..., an,然後有q個提問,每個提問為兩個整數i、j,(i<=j),請你回答,在ai到aj中,最大值是多少。

注意:1 <= n,q <= 100000, ai在int整型表示的範圍內。

input

有多組測試資料。

每組測試資料的第一行為乙個整數n,表示有n個數;

第二行為n個整數,表示a1,a2,..an;

第三行為q,表示q個提問。

接下來有q行,每行兩個數i, j, (i <= j)。

output

每組測試資料先輸出一行"case n:", n從1開始計數;

接下來有q行,每行對應乙個提問,每行只有乙個整數,為ai到aj間的最大值。

sample input

31 3 2

21 2

2 34

1 2 3 4

31 2

2 41 1

sample output

case 1:33

case 2:24

1hint

題目資料已更新。

#include #include #include using namespace std;

#define n 400005

int a[n],sum[n];

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

int mid=(l+r)/2;

build(l,mid,2*rt);

build(mid+1,r,2*rt+1);

sum[rt]=max(sum[2*rt],sum[2*rt+1]);

}int query(int l1,int r1,int l,int r,int rt)

if(r1>mid)

return max(ret1,ret);

}int main()

build(1,n,1);

int q;

scanf("%d",&q);

int p=q;

while(q--)

int ans=query(a,b,1,n,1);

printf("%d\n",ans);}}

return 0;

}

ps:可還行

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...