模板题,字典树最基本的操作
在看别人的板子的时候学到了一点小技巧
下面贴AC代码,顺便补一补字典树相关,顺便放一下橙子讲课的笔记
字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
#include<bits/stdc++.h> using namespace std; const int MAX = 5e4 + 5; string s; int n, t, ans; struct Trie { Trie *next[2]; int vis; Trie() //这个方法开节点很方便的,码一下 { for (int i = 0; i<2; i++) this->next[i] = NULL; this->vis = 0; } }; void insertrie(Trie* rt, string s) { int len = s.length(); Trie *p = rt; for (int i = 0; i<len; i++) { int id = s[i] - ‘0‘; if (p->next[id] == NULL) { p->next[id] = new Trie; } p = p->next[id]; p->vis++; ans = max(ans, (i+1)*p->vis); } } int main() { cin >> t; while (t--) { cin >> n; ans = 0; Trie *rt=new Trie; for (int i = 0; i<n; i++) { cin >> s; insertrie(rt, s); } cout << ans << endl; } return 0; }
小笔记?(^?^*)
背景+定义:字典树进行推广实际上是一个N叉树,字典树相对比较简单,但重要的是在此基础上 的AC自动机比较难。字典树的功能实际上是对于很多的串进行压缩。
板子:
emmmm闭馆了hahahha……明天补