前缀树板子
记得每次输入样例时都要清空数组
此板子适用于求输入的字符串s有多少个(标准)
struct trie{
int ch[maxn][80],cnt[maxn],idx;
void build(){
for(int i=0;i<=idx;i++){
for(int j=0;j<79;j++){
ch[i][j]=0;
}
}
for(int i=0;i<=idx;i++){
cnt[i]=0;
}
idx=0;
}
//ch[i][j]:记录从节点i走j的路径到达的节点编号
void insert(string s){
int p=0;
for(int i=0;i<s.size();i++){
int j=s[i]-'0';
if(!ch[p][j]){
ch[p][j]=++idx;
}
p=ch[p][j];
}
cnt[p]++;
}
int query(string s){
int p=0;
for(int i=0;i<s.size();i++){
int j=s[i]-'0';
if(!ch[p][j])return 0;
p=ch[p][j];
}
return cnt[p];
}
};

浙公网安备 33010602011771号