字典树
Pekary
Read the tea leaves.
展开
-
poj 3630 Phone List(Trie)
这道题通过排序后,对于每个串只需与其前一个串与后一个串做比较来查前缀。 我采用的是字典树(Trie), 昨天学的是动态建立的树,导致TLE。 然后学习了一下静态建立字典树。 思路:插入串时检查当前插入串是不是之前已插入串的前缀,以及检查已插入串是不是当前插入串的前缀。 #include #include #include using namespace std; const in原创 2015-08-14 16:46:28 · 436 阅读 · 0 评论 -
poj1204 字典树+DFS
#include #include const int N = 1008; const int CAP = 150; char stc[N][N]; char word[N]; int res[N][3]; int dir[8][2]={0, -1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1, -1}; int ro原创 2015-08-17 15:35:01 · 427 阅读 · 0 评论 -
poj3764 The xor-longest Path 字典树与异或
这道题的主要突破点就是从1->n上边权异或上1->m上边权的异或等于m->n上边权的异或。 剩下的就是一个经典的字典树求异或最大值了。 按道理我该睡了,但是这道题的一个bug被解决了,一定要记录一下。 #include #include #include using namespace std; const int N = 100000+50; int n, cnt, sz; int原创 2015-10-25 23:14:41 · 418 阅读 · 0 评论 -
hdu4825 Xor Sum 字典树与异或(经典)
求某个数与一些数异或的最大值是字典树应用的一个经典问题。 主要思想是贪心,把数字都转化成二进制,把这些数按存到字典树中。从高位开始遍历,如果有不同的边(可以使得异或值为1)肯定走不同的边,如果没有则走与自己值相同的边(一定存在)。边走边统计,最后输出。 这道题题意是:输入一个数组,再给一些数字进行查询,问这些数字与数组中的哪个元素异或值最大。 思路:把输入的数组元素全部插入字典树,然原创 2015-10-22 22:47:05 · 1940 阅读 · 0 评论 -
hdu5536Chip Factory 字典树与异或 2015ACM/ICPC亚洲区长春站现场赛
等等来写题解,先贴代码。 #include #include #include using namespace std; const int N = 1024; int a[N]; int twochild[2]; struct Trie { int next[2]; int flag[2]; int cnt; void init() {原创 2015-11-01 17:27:46 · 1681 阅读 · 0 评论 -
AC自动机fail边的理解
如果有一条fail边由1->2,则说明从根到2结点所构成的字符串是 从根到1结点所构成的字符串的后缀。 理解这个以后再去模拟一下AC自动机的算法就容易知道AC自动机的原理了。原创 2016-10-19 10:35:32 · 1090 阅读 · 0 评论