線段樹 區間更新 和 查找時更新時候的探討。

咱們都知道區間更新時候有個lazy 標誌。hash

而這個lazy 標誌 咱們要使得其能夠理論重疊。date

即便操做不能重疊。也儘量讓其重疊。gc

好比:一道修改區間>x的值爲gcd(x,val)的操做題。查詢

首先針對查找區間>x 這種查找。咱們在節點上存儲 區間最大值 做爲剪枝。push

另外針對求gcd(x,val)操做。用向量存儲X的每一個階段的值。gcd

另外這個題還有另一個操做 是區間覆蓋。顏色

那麼明顯的。當該操做要覆蓋上去的時候要清除原來的向量中的全部內容。

 

這即是操做之間的關係。

另外謹記。操做是針對當前節點的下面的節點的。

也就是說。你查找到的節點。實際上是在update中更新了。

然後續的節點 都是經過pushdown。

 

講講區間覆蓋。

1:每每用hash來判斷。創建關係。好比能看到幾種顏色。好比以前那個三角形線段。 要不要 進向量。

而三角形那個 有趣之處在於hash 的重複利用。。

2:區間覆蓋 好比看得見看不見。要注意邊境的處理。

離散化以後  你懂的。

 

注意多種操做的時候 覆蓋操做 和別的操做的關係。

每每有覆蓋 就沒有別的操做。

而別的操做 操做到有覆蓋的時候。 改覆蓋標誌便可。

   另外。還有分當時有本身的操做 和 沒有。

 

若是不存。 能夠直接更新到下面。左邊孩子 和 右邊孩子都要更新了。

 

區間合併。

求最長連續上升序列。

查詢的時候  返回結果要注意一點。 並不是。+= 。

 

括號匹配。

肯定 從頭開始的每段連續和均>=0。

這個作法是:每段連續和的最小值。

這個最小值的更新。

Min(左邊min,左邊sum + 右邊min)

另外。針對這個有轉換問題。轉換以後。最小值。變成了最大值。因此還得另外維護最大值。

長個心眼。

且整個和 爲 0 。

 

 

另外。針對這種問題。

轉換啊。什麼的。標記繁多。記住一個一個 都不要漏

相關文章
相關標籤/搜索