1、引言 MapBaseTrieTree是基于Map数据结构保存状态转移条件实现的trie树。 2、实现 状态节点: 其中t为状态节点中的有效信息,next中保存着该状态节点向下一个状态节点的转移条件 声明字段: root为trie树的根节点 构造函数: 构造函数只是初始化根节点 字符串插入: 将字 ...
分类:
其他好文 时间:
2018-07-14 20:33:19
阅读次数:
174
//trie树 //字典树 查找字符串 #include #include #include #include #include #include using namespace std; struct uio{ int son[27],val;//son[a]保存是否存在编号为a的子节点是否存在 ... ...
分类:
其他好文 时间:
2018-07-08 19:06:02
阅读次数:
160
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define maxn 2000010using namespace std;int tot, n, m, rt;int trie[maxn][26], su ...
分类:
其他好文 时间:
2018-07-03 23:49:29
阅读次数:
201
总结一下自己的心得体会,不讲算法。。 AC自动机 AC自动机即Trie+KMP?是解决多模式串匹配的一种算法 它的构造方式如下: 注意:在一般的匹配问题中,我们会把trie树补为trie图,虽然这样会极大的降低匹配时间,但是当利用的$fail$树中各节点相对位置(例如lca)的时候不建议这么做 性质 ...
分类:
其他好文 时间:
2018-07-02 18:44:23
阅读次数:
179
【题目链接】 http://poj.org/problem?id=3764 【算法】 首先,我们用Si表示从节点i到根的路径边权异或和 那么,根据异或的性质,我们知道节点u和节点v路径上的边权异或和就是Sx xor Sy 问题就转化为了 : 在若干个数中,找到两个数异或的最大值,可以用Trie树加速 ...
分类:
其他好文 时间:
2018-07-01 19:27:12
阅读次数:
141
Link: UVa 11732 传送门 Solution: 思路还是很套路:建$Trie$树,在$Trie$树上跑一遍统计答案 (统计答案时注意将叶节点特殊处理,同时对于$e(u,v)$用$val[v]*(val[u]-val[v])$来统计个数) 重点在于此题的存储方式:左儿子右兄弟存储法 (链表 ...
分类:
其他好文 时间:
2018-06-30 20:53:29
阅读次数:
156
Link: LA 3942 传送门 Solution: 感觉自己字符串不太行啊,要加练一些蓝书上的水题了…… $Trie$+$dp$ 转移方程:$dp[i]=sum\{ dp[i+len(x)+1]\} (x为从第i位开始的字符串的前缀)$ 计算一个字符串前缀的多模式匹配在$Trie$树上跑一遍就行 ...
分类:
其他好文 时间:
2018-06-30 20:22:46
阅读次数:
162
~~真是6块钱cpu(笑~~ "爆炸入口" 踹树练习(汗 对于二进制异或和弹性,我们可以贪心的来做。 瓶颈在于快速贪心。 我们可以维护一个trie树,储存异或前缀和。每次在trie树上贪心的跑。 正向and反向跑一次,就可以了 cpp include include include using na ...
分类:
其他好文 时间:
2018-06-24 21:38:48
阅读次数:
166
题目链接:https://www.luogu.org/problemnew/show/P3879 我先说一句: 我永远都喜欢~~Stella~~STL _______ 这个题,很明显就是 ~~trie树~~ ~~hash~~ map+vector _______ 思路: 直接用map 代替这题里的t ...
分类:
其他好文 时间:
2018-06-23 17:13:20
阅读次数:
174
这篇简单的谈谈后缀树原理及实现。 如前缀树原理一般,后缀trie树是将字符串的每个后缀使用trie树的算法来构造: 上面算法中对于一串长m的字符串,建立一颗后缀字典树所需的时间为O(m2),27的循环在这里可看作常数,空间复杂度为O(m)。这里虽然也是O(m)的space,但倍数会比较大。 由于上面 ...
分类:
其他好文 时间:
2018-06-20 12:52:09
阅读次数:
191