View on GitHub

cp-library

64 分木

C++ 用ライブラリ一覧に戻る

ソースコード

nachia/set/word-size-tree.hpp

主な機能

$\left\lbrace 0,1,\ldots ,n-1\right\rbrace$ の部分集合 $S$ を管理する。

$w=64$ として $w$ 分木で管理するため、基本的な計算量は $O(\log n/\log w)$ になる。

struct nachia::WordsizeTree

コンストラクタ

    WordsizeTree(int length);                     // (1)
    WordsizeTree(const std::string& binStr = ""); // (2)

(1) : $n=\text{length}$ として空集合で初期化する。

(2) : 0-indexed で $k$ 文字目が 1 であれば $k\in S$ 、 0 であれば $k\notin S$ として初期化する。

insert

void insert(int x);

$x\notin S$ であれば、 $x$ を追加する。

erase

int erase(int x);

$x\in S$ であれば、 $x$ を取り除く。

count

int count(int x) const;

$x\in S$ なら $1$ 、でなければ $0$ を返す。

noLessThan

int noLessThan(int x) const;

$x\leq y$ かつ $y\in S$ を満たす $y$ について、

noGreaterThan

int noGreaterThan(int x) const;

$y\leq x$ かつ $y\in S$ を満たす $y$ について、

参考


TOP PAGE