Binary Trie
(data-structure/binary-trie.hpp)
Binary Trie
トライ木の辺に対応する文字を0/1に限定することで非負整数を管理できるようにしたデータ構造。
挿入される値の最大値のビット長さを$w$としたとき、値の挿入・削除・検索などを$\mathrm{O}(w)$で行える。また、全体にXORを掛ける操作が$\mathrm{O}(1)$で出来るのが大きな特徴である。
永続化しやすいようにポインタ木で実装してある(が、永続化はしていない。)
使い方
整数のインデックスが必要な場合は引数id
にインデックスを入れるとよい。
-
add(x, id)
: xを追加する
-
del(x, id)
: xを削除する
-
find(x)
: xが存在するか調べる。返り値はpair(個数,インデックスの集合)
-
max_element()/min_element()
: 最大値/最小値を返す。返り値はpair(最大値/最小値,インデックスの集合)
-
get_kth()
: k番目の値を返す。返り値はpair(値,インデックスの集合)
-
operate_xor(x)
: 集合全体にxorを作用させる。
Verified with
Code
Back to top page