一開始我和大佬想的是二分再套線段樹,然後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 ...