永続セグメント木
(segment-tree/persistent-segment-tree.hpp)
永続セグメント木(Persistent Segment Tree)
永続セグメント木とはセグメント木を完全永続化したデータ構造である。完全永続化とは、更新をする時に更新前のデータを残したり、最新でないデータを元として更新したりできるようにすることである。
複雑な割にほとんど使わないので忘れないうちに使い方を簡単にメモ。
使い方
-
PersistentSegmentTree(v, f, ID)
:= 要素を$v$、マージ関数を$f$とする木を作成する。(fはモノイドである必要がある。)
-
update,add,query
は通常のセグ木と同様だが、使用方法に応じてそれぞれ3種類の関数が存在する。
-
update(Node *n, k, x)
:= nを根とする木を更新元とする。
-
update(int t, k, x)
:= t回目の更新の後の木を更新元とする。
-
update(k, x)
:= 最新の木を更新元とする。
-
new_tree()
:= 空の木を返す
Required by
Verified with
Code
Back to top page