本題目包含多組測試,請處理到檔案結束。
在每個測試的第一行,有兩個正整數 n 和 m ( 0多組測試,存在單點更新和區間查詢,維護區間最大值,不需要加標記,普通的線段樹模板。
#include
#include
#include
#include
#include
using
namespace std;
const
long
long mx =
200011
;int tr[
4*mx]
;char ch[5]
;int n;
void
build
(int l,
int r,
int x)
int m=
(l+r)
>>1;
build
(l,m,
2*x)
;build
(m+1
,r,2
*x+1);
tr[x]
=max
(tr[
2*x]
,tr[
2*x+1]
);}int
que(
int l,
int r,
int x,
int a,
int b)
void
updata
(int l,
int r,
int x,
int a,
int b)
int m=
(l+r)
>>1;
if(a<=m)
updata
(l,m,
2*x,a,b)
;else
updata
(m+1
,r,2
*x+1
,a,b)
; tr[x]
=max
(tr[
2*x]
,tr[
2*x+1]
);}int
main()
}return0;
}
HDU 1754 I Hate It(單點更新)
很水的線段樹,單點更新 rmq更快 include includeint n int in 200010 struct treetree 540000 int max int a,int b void build int s,int t,int id int mid s t 1 build s,mi...
hdu 1754 I Hate It 樹狀陣列
小記 對於求區間的最值問題,如何利用樹狀陣列來解決它 idx i 表示1 i區間中最大的值,a是存放元素陣列 利用樹狀陣列來求解區間最值問題的原理就是樹狀陣列對二進位制的利用,對於樹狀陣列的第k個陣列元素值它的意義代表著區間 k lowbit k 1,k 的最大值,在它的下面有lowbit k 個類...
hdu 1754 I Hate It (線段樹版)
讀入的時候因為要先輸入字元c,所以要用getchar 和輸入時的 c處理掉空格,很煩,不按字元輸入而是 s輸入字串可避免這個問題 include include using namespace std define lson l,m,rt 1 define rson m 1,r,rt 1 1 def...