線段樹常見題型

2021-10-09 17:00:52 字數 2229 閱讀 6516

void

build

(int l,

int r,

int o)

int mid=

(l+r)

>>1;

build

(l,mid,o<<1)

;build

(mid+

1,r,o<<1|

1); sum[o]

=sum[o<<1]

+sum[o<<1|

1];//這裡是求和;

sum[o]

=max

(sum[o<<1]

,sum[o<<1|

1]);

//這裡是求最大值

ans[o]

=min

(ans[o<<1]

,ans[o<<1|

1]);

//這裡是求最小值;往往和求最大值一起出現

}

懶惰標記也分好幾種;

直接更新直接換值

void

pushdown

(int o,

int l)

}

累加的運算
void

pushdown

(int o,

int l)

}

直接更新值
//x到y直接更新為c

void

update

(int x,

int y,

int l,

int r,

int o,

int c)

lazy

(o,r-l+1)

;int mid=

(l+r)

>>1;

if(x<=mid)

update

(x,y,l,mid,o<<

1,c);if

(y>mid)

update

(x,y,mid+

1,r,o<<1|

1,c)

; sum[o]

=sum[o<<1]

+sum[o<<1|

1];}

累加更新值
//x到y再加上c

void

update

(int x,

int y,

int l,

int r,

int o,

int c)

lazy

(o,r-l+1)

;int mid=

(l+r)

>>1;

if(x<=mid)

update

(x,y,l,mid,o<<

1,c);if

(y>mid)

update

(x,y,mid+

1,r,o<<1|

1,c)

; sum[o]

=sum[o<<1]

+sum[o<<1|

1];}

累加值查詢
/*求x到y的和*/

query

(x,y,

1,n,1)

;int query (

int x,

int y,

int l,

int r,

int o)

最大值查詢
//查詢x到y的最大值

intquery

(int l,

int r,

int x,

int y,

int o)

int mid=

(l+r)

>>1;

int summ=0;

if(x<=mid)

if(y>mid)

return summ;

}

最小值查詢
//查詢x到y的最小值

intquery1

(int l,

int r,

int x,

int y,

int o)

int mid=

(l+r)

>>1;

int summ=inf;

if(x<=mid)

if(y>mid)

return summ;

}

CTF常見題型

ctf常見題型 ctf比賽通常包含的題目型別包括misc ppc crypto pwn reverse web stega。misc miscellaneous 型別,即安全雜項,題目或涉及流量分析 電子取證 人肉搜尋 資料分析等等。ppc professionally program coder ...

html css常見題型

1.css權重 important 行間樣式 id clsss 屬性 偽類 標籤 偽元素 萬用字元。2 清除浮動三種方法 在父級裡面的最後寫乙個塊級元素,設定clear both,但改變了html結構,不利於語義化理解。觸發bfc,如 設定overflow hidden,但是如果子元素內容太多,回導...

Leetcode 常見陣列題型

1.三數之和 給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。1.先判斷,如果陣列為空或者陣列長度小於3,則返回 2.對陣列進行排序 3.遍歷陣列y 如果nums...