線段樹找從1開始大於等於該值的模板

2021-10-25 03:27:03 字數 946 閱讀 4237

一開始我和大佬想的是二分再套線段樹,然後tle了,想不到優化然後就查網了,如果左子樹滿足條件就不要遞迴右子樹了可以優化一下,然後如果整段區間的最大值也不滿足那就沒必要往下遞迴了。

int

query

(int m,

int l,

int r,

int val)

if(tree[m]

.l>=l && tree[m]

.r<=r && tree[m]

.valreturn-1

;int mid=

(tree[m]

.l+tree[m]

.r)>>1;

int p1=-1

,p2=-1

;if(r<=mid)

return

query

(m<<

1,l,r,val)

;else

if(l>mid)

return

query

(m<<1|

1,l,r,val)

;int temp=

query

(m<<

1,l,r,val);if

(temp!=-1

)return temp;

return

query

(m<<1|

1,l,r,val)

;// int p1=-1,p2=-1;

// if(l<=mid)

// p1=query(m<<1,l,r,val);

// if(r>mid)

// p2=query(m<<1|1,l,r,val);

// if(p1!=-1)

// return p1;

// if(p2!=-1)

// return p2;

}

grep從檔案末尾開始找 c 開始之旅

1.這玩意怎麼學呢?學了很快就忘了,那四捨五入,不就等於沒學嗎?2.日常生活中這玩意有啥用呢?可不可以做些好玩的呢?或者高大上的。對於計算機型別的專業,大學中,基本上都會修c語言這門課程,但是c語言與c 還是有一點點區別。那麼可以通過看書去熟悉c 這門語言,然後通過一些日常的一些練習去熟悉學習的語法...

線段樹篇(1) 建立線段樹

對於有些問題,關注的是線段 區間 0層 1 1層 2 3層 4 3層 8 h 1 層 2 h 1 package tree public inte ce merger package tree public class segmenttree tree e new object 4 arr.leng...

線段樹基礎(1)

訓練了三周線段樹,對線段樹的點操作 斷更新和常見應用範圍進行總結,並記錄一些技巧。線段樹是一種二叉搜尋樹,也是一顆平衡樹。樸素的遞迴寫法是對於每乙個非葉子節點 l,r 取m l r 2,左孩子為 l,m 右孩子為 m 1,r 使用堆式儲存,空間大小為4n。一些define define lc rt ...