【學習筆記】權值線段樹
阿新 • • 發佈:2022-04-21
一. 權值線段樹
權值線段樹即一種線段樹,以序列的數值為下標。節點裡所統計的值為節點所對應的區間 \([l,r]\) 中,\([l,r]\) 這個值域中所有數的出現次數。
舉個例子,有一個長度為 \(10\) 的序列 {\(1,5,2,3,4,1,3,4,4,4\)}。
那麼統計每個數出現的次數。易知 \(1\) 出現了 \(2\) 次,\(2\) 出現了 \(1\) 次,\(3\) 出現了 \(2\) 次,\(4\)出現了 \(4\)次,\(5\) 出現了 \(1\) 次。
那麼我們可以建出一棵這樣的權值線段樹:
從網上搬的。節點中的數字代表節點對應區間中所有數的出現次數。
-
每個葉子節點的值: 代表 這個值的出現次數
-
非葉子節點的值:代表了某一個值域內,所有值出現次數的和。
上面的權值線段樹中,\(6,7,8\) 並沒有出現,然而卻被建出。如果序列的數 \(a_i\) 的取值範圍是 \(w\),那麼我們的樹就需要 \(O(wlogw)\) 的空間。這對於大部分題都是無法忍受的。