题目:http://codeforces.com/contest/1150/problem/D 老是想着枚举当前在给定字符串的哪个位置,以此来转移。 所以想对三个串分别建 trie 树,然后求出三个trie树上各选一个点的答案。那么从“在三个trie树的根,在给定字符串的0位置”开始扩展。 当然 T ...
分类:
其他好文 时间:
2019-05-06 22:02:21
阅读次数:
226
粗体 表示 概念 上的重点; 斜体 表示 行文逻辑 上的重点; 下划线表示 个人理解 ,可能含有大量的直觉,缺乏严谨的数学推导。 顺序与OI知识的学习顺序和难度不一定相关!!! KMP ExKMP Manacher Hash 后缀数组,SA 字典树,Trie树 AC自动机 回文自动机 后缀自动机,S ...
分类:
其他好文 时间:
2019-05-04 14:56:08
阅读次数:
130
大意: 将所有长度为2*n的合法括号序列建成一颗trie树, 求trie树上选出一个最大不相交的边集, 输出边集大小. 最大边集数一定不超过奇数层结点数. 这个上界可以通过从底层贪心达到, 所以就转化为求奇数层结点数. 然后就dp求出前$i$为'('比')'多j个的方案数, 奇数层且合法的时候统计一 ...
分类:
其他好文 时间:
2019-04-30 10:45:25
阅读次数:
227
问题模型:给定一个字典中的所有单词,然后每次给出一个单词进行询问是否为字典中的单词 对字典中的每一个单词,将这个单词转化为字典树的”一根树枝“,及从根节点往下延伸,按照顺序每个节点对应一个该单词中的字母。 例如age,an root a g n e 建树: 插入单词: 查询: ...
分类:
其他好文 时间:
2019-04-26 00:17:37
阅读次数:
164
思路 有点麻烦的Trie树题 注意到每个节点的贡献是(深度(根的深度是0)乘2+1)乘上在这个点分叉的字符串个数,所以全部插入之后dfs一遍即可(为了避免两个字符串一样的情况,还应该特判一下最后的中止节点) 代码 字符集太大需要用邻接表存才能跑过 直接存边的TLE代码 cpp include inc ...
分类:
其他好文 时间:
2019-04-11 16:18:42
阅读次数:
113
字典树(Trie Tree) 入门模板题 hdu oj P1251 题目描述 Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). 输入格式 输入数据的第一部分是一张单词表,每行一个 ...
分类:
其他好文 时间:
2019-04-09 18:47:50
阅读次数:
146
字典树 (trie) 字典树,又名$trie$树,是一种用于实现字符串快速检索的树形数据结构。核心思想为利用若干字符串的公共前缀来节约储存空间以及实现快速检索。 $trie$树可以在$O((n+m) len)$解决形如这样的字符串检索问题: 给定$n$个字符串,再给定$m$个询问,每次询问某个字符串 ...
分类:
其他好文 时间:
2019-03-21 19:56:52
阅读次数:
164
$pdf$ solution #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<vector> #define ll long long using namespace std; in ...
分类:
其他好文 时间:
2019-03-15 18:49:15
阅读次数:
130
思路 可持久化Trie树的好题 注意到题目要求求的询问非常的鬼,不太好做 然后有趣的思路就出现了,我们预处理出来异或前缀和s[i],每次询问的x异或上s[n]之后,问题就变成了在l 1~r 1中选一个异或x最大的数 然后因为区间查询,上可持久化Trie树就好了 注意初始的Trie树不能是空树,必须先 ...
分类:
其他好文 时间:
2019-03-07 01:15:31
阅读次数:
259
"题目链接 $Click$ $Here$" 本题$AC$自动机写法的正解之一是$Fail$树上跑$DP$。 $AC$自动机是$Trie$树和$Fail$树共存的结构,前者可以方便地处理前缀问题,而在后者中,一个节点的子节点, 代表以当前字符串为后缀的所有字符串节点 (根节点外向$Fail$树)。我们 ...
分类:
其他好文 时间:
2019-03-04 09:35:55
阅读次数:
182