説明
プレフィックス木とも呼ばれる。あるノードの配下の全てのノードには自身に対応する文字列に共通するプレフィックスがあり, ルートには空の文字列が対応している。
計算量
実装例
exist は子供以下に追加された文字列の個数, accept はそのノードにマッチする全ての追加された文字列の番号が格納される。
- Trie< char_size, margin >(): 文字列の種類数 char_size, 開始文字が margin のトライ木を作成する。
- add($S$): 文字列 $S$ をトライ木に追加する
- query($S$, $f$): 文字列 $S$ のプレフィックスに一致する文字列を検索する。一致した文字列ごとに関数 $f$ が呼び出される。
- size(): ノード数を返す
- count(): 存在する文字列の個数を返す
検証
AtCoder 天下一プログラマーコンテスト2016本戦 C - たんごたくさん