首先,在A 串上建立一个SAM,然后用B串在上面跑。具体跑的方法是: 从根节点开始,建立一个指针 p ,指着B串的开头,同步移动指针,沿着SAM的边移动,如果可以移动(即存在边)那么万事皆好,直接len++就好,但是,如果无法继续转移(失配了),那么,我们考虑跳回其父节点,因为其父节点的Right集 ...
分类:
其他好文 时间:
2018-07-19 23:26:51
阅读次数:
295
LCS2 - Longest Common Substring II 链接 题意: 求N(N<=10)个串的最长公共子串。 分析: poj2774上那道题,对一个串建立后缀自动机,另一个在上面匹配。 这道题是对多个串求。那么同样,让每个串在后缀自动机上匹配,然后记录在后缀自动机的每个节点上记录,当前 ...
分类:
其他好文 时间:
2018-07-19 16:19:25
阅读次数:
129
好多题没做 堆:银河英雄传说 离散:合并果子 登山机器人 图形面积 球赛 线段树:线段树练习题 LCA:还有一些题 RMQ:与众不同 KMP:不知 周末套题:重要人物 单调队列: 网络流:蜥蜴 纪中:宝石 气象牛 序章-弗兰德的秘密 理科男 算法:主席树 trie AC自动机 后缀自动机 tarja ...
分类:
其他好文 时间:
2018-07-15 16:12:47
阅读次数:
161
数据结构 堆 二叉查找树 最小生成树 树状数组 线段树 主席树 树套树 圆方树 平衡树 字符串 字典树 KMP匹配 AC自动机 后缀自动机 图论 Tarjan强连通分量 ——有向图 ——无向图 ——点双 ——边双 最近公共祖先lca 其它 高精度 ——加 ——减 ——乘 ——除 ...
分类:
其他好文 时间:
2018-07-14 17:20:10
阅读次数:
170
/* 最长公共子串 用后缀自动机实现 首先建立一个串的后缀自动机 然后用另一个串在上面跑自动机即可 */ #include #include #include #include #define M 500010 using namespace std; char s[M]; int ch[M][26... ...
分类:
其他好文 时间:
2018-06-29 22:31:17
阅读次数:
233
standing out from the field 给你n个串,对于每个串求出只包含在这个串中的本质不同的子串? 后缀自动机,建树,对于每一个点打上包含在哪个串中的标记。 叶子都是前缀,直接在sam_build时预处理;其余的dfs一遍,由于x是son[x]的后缀,故x的状态由son[x]影响, ...
分类:
其他好文 时间:
2018-06-23 11:45:48
阅读次数:
165
说是教程其实也就我自己看怕我这个shabi又双叒叕忘了后缀自动机然后再学一遍 1.后缀自动机就是能识别字符串S所有后缀的自动机 根据定义知道 它也可以识别S的所有子串 2.Right集合 是指子串str在母串S中出现的结束位置的集合 对于一个Right集合,适合它的子串长度取值区间为$[minlen ...
分类:
其他好文 时间:
2018-06-17 23:22:16
阅读次数:
221
"hihocoder系列" 这是一个系列讲解,好康的,有六集…… 构建SAM并求不同子串数 对应第二个讲解 cpp include include include using namespace std; typedef long long ll; int tot, n, maxLen[200000 ...
分类:
其他好文 时间:
2018-05-15 21:02:38
阅读次数:
170
BZOJ_3238_[Ahoi2013]差异_后缀自动机 Description Input 一行,一个字符串S 一行,一个字符串S Output 一行,一个整数,表示所求值 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=5 ...
分类:
其他好文 时间:
2018-05-13 21:02:23
阅读次数:
161
显然,在后缀自动机的后缀树上插入一个后缀后,此时表示整串的节点(np)到根的所有节点,其表示的串作为子串的出现次数都要+1;发现需要链修改,动态连边/删边,因此用LCT维护 注意:虽然没明确写,但根据讨论区以及做题情况,此题字符集只有AB两个字母 错误记录:没有msk^=res ...
分类:
其他好文 时间:
2018-05-10 20:51:33
阅读次数:
198