Lib/トライ木(Trie)
code:cpp
struct Trie{
vector<vector<ll>> v;
vector<ll> empty;
Trie() : v(1, vector<ll>(28, -1)), empty(28, -1) {//next='a',next='b', ... 'z',count,end
v026 = 0;
v027 = 0;
empty26 = 0;
empty27 = 0;
}
void insert(string s){
ll p = 0;
for(ll i = 0 ; i < (ll)s.size(); i++ ){
ll c = si;
vp26++;
auto tmp = vp;
if(tmpc-'a' == -1){
vpc-'a' = v.size();
p = v.size();
v.push_back(empty);
}else{
p = tmpc-'a';
}
}
vp26++;
vp27++;
}
ll is_prefix(string s){//sをprefixとして持つ文字列の個数
ll p = 0;
ll last = v026;
for(ll i = 0 ; i < (ll)s.size(); i++ ){
ll c = si;
auto tmp = vp;
if(tmpc-'a' == -1){
return 0;
}else{
p = tmpc-'a';
}
last = tmp26;
}
return last;
}
};
怪しい(特にis_prefix)
validation
https://atcoder.jp/contests/abc353/submissions/70554651