Trie总结

是各种自动机的基础。

数据结构里也会讲。这里只讲Trie作为字典使用的情形。

板子:

inline void ins(string s,int v){
	int u=0;
	for(int i=0;s[i];++i){
		int c=idx(s[i]);
		if(!ch[u][c]){
			memset(ch[sz],0,sizeof(ch[sz]));
			ch[u][c]=sz++;
		}
		u=ch[u][c];
		val[u]+=v;
	}
}

其他操作是类似的。理解如何在Trie上跳即可。\(ch[u][i]\)表示\(u\)节点经过代表字符\(i\)的边后到达的儿子节点。

一般用于检索字符串是否出现。其他应用见数据结构篇。

posted @ 2025-04-18 16:57  RandomShuffle  阅读(17)  评论(0)    收藏  举报