杭電1754 線段樹(單點更新 區間最值)

2021-09-17 00:26:01 字數 1139 閱讀 9999

杭電1754原題傳送門

線段樹單點更新詳解傳送門

寫在最前面:用scanf(printf)代替cin(cout),時間少的不是一點點。同樣的**scanf能過,cin超時。嗯,玄學做題。

已過**

# include

# include

# include

# include

using namespace std;

const

int maxnn =

int(

1e5)*2

;struct str s[maxnn*4]

;void

bulid

(int l,

int r,

int k)

int mid =

(l + r)/2

;bulid

(l, mid,

2* k)

;bulid

(mid +

1, r,

2* k +1)

;}void

insert

(int d,

int n,

int k)

int mid =

(s[k]

.l + s[k]

.r)/2;

if(d <= mid)

else

s[k]

.n =

max(s[k *2]

.n, s[k *2+

1].n);

}int maxn;

void

fin(

int l,

int r,

int k)

int mid =

(s[k]

.l + s[k]

.r)/2;

if(r <= mid)

else

if(mid < l)

else

}int

main()

string s;

int a, b;

while

(m--

)else

if(s[0]

=='q')}

}return0;

}

單點更新,區間查詢線段樹

線段樹的空間複雜度是4n include include include using namespace std const int maxn 100005 const int inf 0x3f3f3f3f int n,a maxn struct node 結點 tree maxn 4 樹結點儲存陣...

單點更新 區間查詢最值 線段樹 杭電hdu1754

單點更新 區間查詢最值 線段樹 杭電hdu1754 初學線段樹,覺得線段樹美在它的遞迴實現,可以更新,rmq演算法可以實現區間查詢最值,我不知道怎麼修改 define crt secure no warnings include include include using namespace std...

線段樹 學習 模板 單點更新 區間更新

線段樹是幹什麼的?有一列數,每次可以進行以下三種操作中的一種 1 給指定區間中的每個數都加上某個值 2 將指定區間內的所有數置成某乙個統一的值 3 詢問乙個區間上的最小值 最大值 所有數的和。樸素做法怎麼做?用線性表儲存,每種操作,對待處理或待詢問區間中的每個元素都逐一進行處理。複雜度多少?假設這個...