数组字典树模板
拿之前题解当模板的通用性太差了。。还是存个母版作为改的基础比较好
暂时懒得学内存池,就都用数组版本吧
全局要把trie[0].init()一次
struct NODE{ int nxt[10]; int val; void init(){ val=0;memset(nxt,-1,sizeof nxt); } }trie[maxn]; int node_cnt=0; void insert(char *s){ int len=strlen(s); int now=0; for(int i=0;i<len;i++){ int id=s[i]-'0'; int to=trie[now].nxt[id]; if(to==-1){ to=++node_cnt; trie[to].init(); trie[now].nxt[id]=to; } now=to; } trie[now].val=1; } void del(char *s){ int len=strlen(s); int now=0; for(int i=0;i<len;i++){ int id=s[i]-'0'; int to=trie[now].nxt[id]; trie[to].init(); now=to; } } int query(char *s){ int len=strlen(s); int now=0; for(int i=0;i<len;i++){ int id=s[i]-'0'; int to=trie[now].nxt[id]; if(to==-1)return -1; now=to; } return trie[now].val; }