主席樹

主席樹:可持久化線段樹。

可持久化線段樹:保存歷史記錄的線段樹。

來源:某大神考場上不會打某數據結構而發明的 Orz

如果更新某線段樹要記錄它的歷史記錄,最暴力的方法就是新開一棵線段樹。

時間空間明顯都很大。

我們發現:每次修改,線段樹都只用修改某條路徑上log2n 個點,如果新開線段樹全都再搞一遍太不划算了。

那我們可以試着只修改要修改的那條路徑。

以線段樹經典用法求區間最大爲例,如圖:

將區間[1,2,3,4] 中的1 改爲5

主席樹

要修改的點重開一個空間,不用修改的直接連回原來位置就好啦。

可持久化線段樹擁有了很多普通線段樹不具有的特殊性質,所以也有了很多妙用。

例題:BZOJ2809 (這裏題解)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章