
后缀自动机
YihAN_Z
ただのあほです
展开
-
BZOJ 3238 [Ahoi2013]差异 后缀自动机
题目大意: len(Ti)+len(Tj)枚举一下就好,主要是如何算sigma{lcp(Ti,Tj)}将原串反过来建后缀自动机,两个节点的lca即最长子串就是这两个节点代表的串的lcp于是枚举、DP一下即可#include <cstdio>#include <algorithm>#include <cstring>#define N 500005using namespace std;t原创 2017-04-10 15:13:46 · 449 阅读 · 0 评论 -
BZOJ 2946 [Poi2000]公共串 后缀自动机
题目大意:给出几个由小写字母构成的单词,求它们最长的公共子串的长度。后缀自动机练手题。后缀自动机原理详见CLJ的课件将一个串建成后缀自动机,其他串放到自动机里去匹配,对于每一个串在每一个状态处记录一下此串在本状态下匹配的最长长度。对于每一个状态,将所有串匹配的最长长度取一个最小即所有串在当前状态下最长的公共子串,用这个长度更新答案即可。需要注意的地方是匹配到一个位置后要用其更新parent。#inc原创 2017-03-17 07:38:26 · 420 阅读 · 0 评论 -
BZOJ 2555 SubString LCT 后缀自动机
题目大意:给出一个初始字符串,要求支持,在末尾添加一段字符串,查询一个串出现了几次,强制在线。构造后缀自动机,一个串出现次数等于代表这个串的状态的right集合大小。然而强制在线,right集合在添加之后会发生改变。 考虑添加一个字母时,只有产生的新状态的所有parent的right集合大小会加1,于是用LCT维护一下就好了。#include <cstdio>#include <cstring>原创 2017-04-12 21:45:29 · 376 阅读 · 0 评论