
算法-后缀自动机
YxuanwKeith
这个作者很懒,什么都没留下…
展开
-
GDKOI 2014 基因模式 基于SAM的算法
GDKOI 2014 基因 基于SAM的算法原创 2016-04-01 12:49:00 · 2175 阅读 · 0 评论 -
CF 316G3 Good Substring SAM上的简单计数
题目大意给你一个长度为NN的字符串SS和MM个限制。每个限制为(t,l,r)(t,l,r),表示限制字符串ss在tt中的出现次数为ll到rr。问SS中有多少不同的子串符合这MM条限制。N,Lenti≤500000N , Len_{t_i}\leq 500000 M≤10M \leq 10解题思路看到这题,一个很直接的思路就是用SAM来做,我们可以先建出SS的SAM,然后再把MM个限制串也放进去。S原创 2016-08-16 16:40:55 · 868 阅读 · 0 评论 -
CF 616F Expensive Strings 用到fail链性质的SAM练手题
题目大意给定NN个串tit_i,每个串有一个权值cic_i。现在要求找到一个串SS,满足∑Ni=1ci⋅|S|⋅pi,s\sum^{N}_{i=1}c_i\cdot|S|\cdot p_{i,s},pi,sp_{i,s}表示SS在tit_i中出现次数。N≤105N \leq 10^5 ci ≤107c_i\ \leq 10^7 ∑ti≤5∗105\sum t_i \leq 5 * 10^5解题思原创 2016-08-16 23:12:45 · 1219 阅读 · 0 评论 -
JZOJ4774 【GDOI2017模拟9.10】子串 线段树合并维护SAM的fail树信息(CF 666E类似)
题目大意有NN个字符串,S1,S2...SNS_1,S_2...S_N。现有有QQ个形如(li,ri,Pi)(l_i,r_i,P_i)的询问,表示字符串PiP_i在SlS_l~SrS_r中多少个串出现过。N,Q≤5∗105N ,Q\leq 5*10^5解题思路看到这种多串匹配为问题,我们可以考虑用SAMSAM来实现。首先,我们对NN个串SiS_i建一颗TrieTrie,在TrieTrie上构SAMS原创 2016-09-10 17:26:37 · 1534 阅读 · 0 评论 -
后缀自动机(SAM)学习笔记
构图及原理定义算法后缀自动机(SAM)就是一个要实现能存下一个串中所有子串的算法,按一般来说应当有O(N2)O(N^2)个状态,而SAM却可以用O(N)个状态来表示所有子串,因为它把很多个本质相似的子串映射到了同一个状态上,从而实现了这个优美的算法原创 2016-03-30 20:31:38 · 8610 阅读 · 9 评论 -
51Nod 算法马拉松17 Simple KMP 链剖维护SAM的fail树
题目大意化简一下题意! 现在给你一个长度为NN的字符串,对于每个字符ii,我们要统计AnsiAns_i为前ii个字符有多少个相同的子串,并且其中一个子串一定要经过位置ii。在第ii行输出∑jj=1Ansj\sum_{j = 1}^{j}Ans_j。N≤100000N \leq 100000解题思路我们考虑先对原串建SAM,问题就变成了统计一个前缀所在节点的failfail链上有多少rightrig原创 2016-08-29 11:12:16 · 1132 阅读 · 0 评论