線段樹合併學習筆記

2022-03-01 05:12:29 字數 401 閱讀 4656

就是兩顆線段樹合成乙個線段樹

那合成的線段樹是適合所有線段樹嗎

當然不是,是動態開點線段樹

這裡建n個節點的時候,每個節點建一棵樹

而且要按照一定的形態建立一條鏈

就是說如果最終形態是有n個數字的樹,

那你初始化的那一條鍊子一定是這顆樹上扣下來的

這樣才方便合併

最重要的操作

流程:如果x和y有一顆樹為空,直接返回

否則,他們上面肯定形態相同(建樹你幹了什麼?)

那就留下乙個x好了

處理一下size[x]什麼的芭芭拉拉

然後右兒子,左兒子一同遞迴下去

int merge(int x,int y)

類似於主席樹,自己瞎yy就好

線段樹合併學習筆記

線段樹合併對一整個樹做完時間空間複雜度是n log nn log n nlog n的,套點其他什麼東西複雜度就上去了 動態開點的話注意 空間 樹上主席樹啟發式合併的話不 空間是兩個log的,容易被卡,比如這題 我就被卡了 悲 當然線段樹合併貌似總是可以被spl ay splay spla y啟發式合...

線段樹合併 學習筆記

權值線段樹 動態開點線段樹 有時候我們需要對權值線段樹進行合併操作。然後就用到了線段樹合併。一般是有很多棵線段樹,然後需要將其中的兩棵合併起來。其實方法很簡單呢。就是分三種情況討論一下。假設現在要將線段樹a和線段樹b合併。並且a成為合併之後的線段樹。如果a有當前子樹,而b沒有,那麼返回a的當前子樹 ...

學習筆記 線段樹合併

分析 線段樹合併人生第一題。網上的題解我都沒看懂 我自己講一下好了 線段樹合併就是把兩棵權值線段樹合併到一棵 那怎麼合併呢?假設有這麼兩棵樹 乙個結點代表一段值域區間有幾個數,那麼可以看出合併後應該是這樣的 然後具體步驟就是找到乙個結點,如果乙個結點一棵樹上有一棵樹上沒有,那麼直 接返回那個結點的編...