后缀自动机
a_crazy_czy
日后,尽量别叫今天的泪白流。
展开
-
[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 · 1521 阅读 · 0 评论 -
[JZOJ4439]不是回文串
题目大意一个只包含小写字母的字符串SS,定义一个子串TT出现值为|T||T|乘上TT在SS中的出现次数。 求出现次数不为11的子串中最大的出现值。|S|≤106|S|\le 10^6题目分析SAM\mathrm{SAM}裸题,直接建SAM\mathrm{SAM},计算即可。 时间复杂度O(|S|)\mathrm O(|S|)。代码实现#include <algorithm>#include <原创 2016-05-06 22:10:48 · 1384 阅读 · 0 评论 -
[TJOI&HEOI2016]str/[JZOJ4614]字符串
题目大意给出只包含小写拉丁字母的字符串SS,有mm个询问,给出(a,b,c,d)(a,b,c,d),求属于区间[a,b][a,b]的所有子串与S[c..d]S[c..d]的LCP\mathrm{LCP}长度最大值。1≤|S|,m≤1051\le|S|,m\le10^5题目分析显然可以使用后缀数组,我们要求的是 maxi∈[a,b]{min(d−c+1,b−i+1,LCP(sufi,sufc))}原创 2016-07-12 19:17:42 · 799 阅读 · 0 评论 -
[HDU5659]CA Loves Substring/[JZOJ4705]knight
题目大意给定一个长度为nn的字符串(只包含数字),我们定义FiF_i表示在第ii个字符后面断开原创 2016-08-16 21:16:25 · 913 阅读 · 0 评论 -
[HDU4029]Distinct Sub-matrix/[JZOJ4683]矩阵
题目大意给定一个n×mn\times m的矩阵,每个位置有一个大写字母。请求出这个矩阵本质不同的子矩阵的个数(参考字符串本质不同的子串)。 1≤n,m≤1101\le n,m\le 110题目分析一个很naivenaive的想法,暴力枚举,然后使用多哈希O(1)\mathrm O(1)判断,时间复杂度O(n4)\mathrm O(n^4)。 然而这题我们可以使用一种更高的姿势水平玩哈希。枚举子矩原创 2016-08-14 22:33:18 · 896 阅读 · 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 · 663 阅读 · 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 · 954 阅读 · 0 评论 -
[GDKOI2014][JZOJ3572]基因模式
题目大意给定一个模板串TT,字符集为{A,C,T,G}\{A,C,T,G\}。 有qq个询问,每次给出一个串SS,字符集也只是上面四个字母,还会给定字符集中某些字母的奇偶性限制,询问SS中一共有多少个子串满足以下两个条件: ∙ \bullet\ 这个串是TT的一个子串 ∙ \bullet\ 对于给定了奇偶性限制的字母,该串中中该字母出现的次数奇偶性要满足这个限制1≤|T|≤105,∑|S|≤1原创 2017-04-16 11:41:21 · 440 阅读 · 0 评论