3172: [Tjoi2013]单词 Description 某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。 某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。 ...
分类:
其他好文 时间:
2018-04-13 22:35:16
阅读次数:
212
https://www.lydsy.com/JudgeOnline/problem.php?id=2342 解法一: 对原串构建回文自动机 抽离fail树,从根开始dfs 设len[x]表示节点x表示的最长回文子串长度 在fail树上,x到根节点的路径上的点表示的字符串包含了x代表的回文子串的所有回 ...
分类:
其他好文 时间:
2018-04-01 21:50:07
阅读次数:
157
建出AC自动机,获得fail树,发现问题转化成求以x为根的子树中有多少个属于y串的节点。 求出fail树的dfs序,由dfs序的性质可知以x为根的子树在dfs序上是连续的。 在trie树中跑一边dfs,dfs过程中用树状数组统计答案即可。 ...
分类:
其他好文 时间:
2018-03-14 10:42:18
阅读次数:
211
http://www.spoj.com/problems/LCS/ 题意:求两个串的最长公共子串 用一个串建后缀自动机,另一个串在上面类似于fail树的方式跑 不匹配时到它的parent树上的父节点,相当于保留当前最长匹配后缀 ...
分类:
其他好文 时间:
2018-03-06 23:15:25
阅读次数:
217
【BZOJ2342】双倍回文(回文树) 题面 "BZOJ" 题解 构建出回文树之后 在$fail$树上进行$dp$ 如果一个点代表的回文串长度为$4$的倍数 并且存在长度为它的一半的回文后缀 那么就是可行的 如何维护长度是一半的回文后缀? $fail$树上的父亲一定包括了它的所有的回文后缀 因此在$ ...
分类:
其他好文 时间:
2018-02-22 22:06:23
阅读次数:
182
题解:建立AC自动机,然后Dp 考虑长度与n相等时 f[i][j][2]表示第i位匹配到AC自动机第j号节点,是否顶着上界的方案数 转移枚举这一位填什么 注意,如果当前节点沿Fail树能走到单词节点就不能转移到他 长度<lenn不用考虑顶上界 问题:不明白最后统计答案的方式 ...
分类:
其他好文 时间:
2018-02-20 18:45:08
阅读次数:
193
题解:在线建立AC自动机,建好Fail树,a是b的子串也就是b到root的节点能沿Fail树走到a 离线所有询问,DFS一遍的时候顺便处理询问 或按b排序在AC自动机上走也可以 用树状数组维护,查询区间和即可 一开始LCA打错了竟然得了70害得我找不出错 ...
分类:
其他好文 时间:
2018-02-19 21:50:18
阅读次数:
239
题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过。一看这种多字符串匹配问题,我们联想到了AC 自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树,fail树有一个很好的性质就是,对于一个节点x,它所对应的字符串是它子树中所有节点对应的字符串的后 ...
分类:
其他好文 时间:
2018-01-22 22:54:32
阅读次数:
207
A. Candy Game 显然最优策略是一个一个吃,故比较哪种糖果的个数比较多即可。 B. PreSuffix 对所有串建立AC自动机,那么若前缀$i$是前缀$j$的后缀,说明$i$是Fail树上$j$的祖先。 所以对于询问$(x,y)$,答案就是两点在Fail树上的LCA在原Trie中子树内的字 ...
分类:
其他好文 时间:
2018-01-06 22:15:03
阅读次数:
321
发现每个可行的答案是两个短的回文串拼成的一个长的回文串所以短串一定是长串的某个后缀建出来回文自动机后,在$fail$树$dfs$即可 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 ...
分类:
其他好文 时间:
2017-12-26 21:08:09
阅读次数:
157