回文自动机
Vectorxj
这个作者很懒,什么都没留下…
展开
-
[回文自动机][阈值] BZOJ 4932: 基因
SolutionSolution 关于回文自动机的前端插入:一个回文串的回文前缀显然是其回文后缀。实现两端插入需要记录两个指针lastback,lastfrontlast_{back},last_{front},注意当最长回文前(后)缀为原串时,两个指针就相同了。 一个串的子串的回文自动机是这个串的回文自动机的子图。因为增量法构造回文自动机时是不会改变原有的自动机的。 这道题的话阈值B=n原创 2018-01-09 09:32:14 · 720 阅读 · 1 评论 -
[回文自动机] BZOJ 3676: [Apio2014]回文串
SolutionSolution 回文自动机有很多性质是和后缀自动机很相似的。 这个题可以类似于SAM,在每个节点uu维护一个righturight_u。答案就是max{|rightu|∗lenu}max\{|right_u|*len_u\} 关于回文自动机的复杂度,可以势能分析。 #include using namespace std; const int N = 303030;原创 2018-01-08 11:15:21 · 331 阅读 · 0 评论 -
[回文自动机][树形DP] CodeChef PALPROB
SolutionSolution 建出回文自动机,每个节点再维护一个halfuhalf_u指针,指向长度不超过⌊lenu2⌋\lfloor{len_u\over2}\rfloor的最长回文后缀。 树形DP出每个点的nessness表示回文指数,答案就是∑nessu∗|rightu|\sum ness_u*|right_u|。 failfail链上的节点的lenvlen_v一定是递减的。可以倍原创 2018-01-09 11:41:53 · 340 阅读 · 0 评论 -
[回文自动机][DP] Codeforces gym 100543 G - Virus synthesis
SolutionSolutionSolution 考虑在回文自动机上DP fufuf_u表示回文自动机中uuu节点所代表的回文串最少需要几次才能得到 lenulenulen_u为奇数,fu=lenufu=lenuf_u=len_u。 lenulenulen_u为偶数,fu=min(fp+1,fhalfu+(lenu2−lenhalfu)+1)fu=min(fp+1,fhalfu+(lenu...原创 2018-03-11 15:19:40 · 308 阅读 · 0 评论