字典树Trie
文章平均质量分 55
a_crazy_czy
日后,尽量别叫今天的泪白流。
展开
-
AC自动机学习小记
算法简介AC\mathrm{AC}自动机,英文Aho−Corasick automaton\mathrm{Aho-Corasick\ automaton}。1975年产生于贝尔实验室,是著名的多模式匹配算法之一。必备技能KMP\mathrm{KMP}算法,Trie\mathrm{Trie}(字典树)。算法分析AC\mathrm{AC}自动机其实就是将所有模式串放进一颗Trie\mathrm{Tri原创 2015-08-27 16:38:28 · 1654 阅读 · 2 评论 -
[GDOI模拟2015.08.18]解密
题目大意给定一篇由若干个单词构成的原文,还有一个由若干个单词组成的句子。加密文是由原文单词通过某个单词(可能一样)替换而成的,原文相同单词一定会被相同加密文单词替换。没有两个不同的原文单词被同一个加密文单词替换。 要求找出句子在加密文中第一次出现的位置。 原文字符总和不超过10000001000000,句子字符总和不超过10000001000000。所有单词由若干小写字母组成。题目分析这题一看就原创 2015-08-23 20:40:05 · 725 阅读 · 0 评论 -
[BZOJ4134][JZOJ4401]ljw和lzr的hack比赛
题目大意给定一棵有nn个节点的树,每个点有黑白两色之一。 Alice和Bob轮流操作,每次先手选择一个白点,将其到根路径上所有点染黑。一开始Alice是先手,两人都选最优策略,不能操作者输。 要求输出Alice是否能赢。如果能赢,那么第一步可以选择哪些节点。 初始时不是所有点都为白点,每个点的颜色会给定。1≤n≤1000001\le n\le 100000题目分析我们先将黑点去掉,白点的父亲设原创 2016-03-27 13:20:05 · 1468 阅读 · 0 评论 -
[TJOI2013]单词
题目大意一篇文章由nn个单词组成。询问每个单词在文章中作为某单词(包括自己)的子串总共出现了多少次(如果在某单词中多次出现,算多次)? 单词都由小写字母组成。令单词总长为LL,L≤1000000L\le 1000000,1≤n≤2001\le n\le 200题目分析在TrieTrie上建一个SAM\mathrm{SAM},然后直接计算即可。 当然如果使用SAM\mathrm{SAM}构造广义后原创 2016-05-06 22:03:03 · 1516 阅读 · 0 评论 -
[SCOI2016][JZOJ4631]背单词
题目大意题目分析题意差评。 显然最优解下,第一种情况我们显然不会让它发生。 如果我们将字符串之间的后缀关系连成一棵树,那么可以发现此题相当于给树分配一种序列,满足祖先必须在儿子之前,并且儿子与父亲位置差之和最小。 我们可以将所有串反过来构造一棵TrieTrie解决连边问题(然而弱智的我考场上敲了个AC\mathrm{AC}自动机,用failfail树乱搞)。 考虑贪心策略,这题让我想到了小学原创 2016-07-15 19:12:57 · 663 阅读 · 0 评论 -
[JZOJ4828]最大值
题目描述给定一个含有nn个正整数的序列AA,以及一个位运算操作符opop,请求出所有Ai op Aj(1≤i<j≤n)A_i\ op\ A_j(1\le i<j\le n)中的结果的最大值。 其中opop可能是与、或和异或。 本题数据TT组数据。1≤T≤6,2≤n≤105,1≤Ai<2201\le T\le6,2\le n\le10^5,1\le A_i<2^{20}题目分析考虑枚举每一个AiA原创 2016-10-31 16:22:33 · 638 阅读 · 0 评论 -
[JZOJ4964]Rhyme
题目大意给定若干个模板串{Ti}\{T_i\}。你要求出一个最长的字符串SS,使得SS中任意长度为KK的子串都是一个模板的子串。请输出这个长度,如果可以无限长就输出INF。 所有字符都是小写拉丁字母。1≤∑|Ti|≤105,1≤K≤1051\le\sum|T_i|\le10^5,1\le K\le10^5题目分析建出模板串集合的TrieTrie,然后在上面建个SAM\mathrm{SAM}。然后在原创 2017-01-23 19:22:57 · 657 阅读 · 0 评论 -
[JZOJ5052]旅行路线
题目大意给定一棵nn个节点的树,11是根节点。定义dxd_x表示点xx的度数,你需要统计有多少条不同的树链(从点向祖先走的路径)。 两条路径相同当且仅当其长度相同而且对于两条路径各自经过的第ii个点xx和yy,dx=dyd_x=d_y。1≤n≤1051\le n\le10^5题目分析求出dd之后可以发现这相当于给定一棵(不严格的)字典树(没有合并相同儿子),要你求本质不同的子串个数。 你可以合并原创 2017-04-13 22:37:58 · 949 阅读 · 0 评论 -
[JZOJ5363]生命之树
题目大意给定一棵nn个节点的树,11号节点为根每个节点上面有一个由小写字母组成的字符串SiS_i和一个权值vali{val}_i,两个字符串Si,SjS_i,S_j组合起来的收益为LCP(Si,Sj)LCP\left(S_i,S_j\right)。 定义decu{dec}_u为uu子树内所有的点,那么以uu为根的子树的总收益为 ansu=∑i∈decu∑j∈decu,i<j(vali xor v原创 2017-09-16 08:17:21 · 817 阅读 · 0 评论