回文自动机
C202044zxy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CF932G Palindrome Partition
一、题目点此看题二、解法真的神题,我是看着yyb大佬的博客做的,换我自己肯定想不出来。题目中分成kkk段肯定是直接做不了的,我们尝试对原问题做等价变化。可以构造出一个新的字符串:S′=s[1]s[n]s[2]s[n−1]....S'=s[1]s[n]s[2]s[n-1]....S′=s[1]s[n]s[2]s[n−1]....,问题就转化成了把S′S'S′划分成若干个长度为偶数的回文串(...原创 2020-02-27 08:53:16 · 329 阅读 · 0 评论 -
秩序魔咒
一、题目点此看题二、解法题目很长,但是很容易看出来是回文自动机。我们建两个回文自动机,然后再两个自动机上同时开始,跳相同的转移,然后更新最大长度即可,过程中在维护一个最大长度有多少个,从0,10,10,1都要跑一遍。时间复杂度O(n)O(n)O(n),贴个代码qwqqwqqwq。#include <cstdio>#include <cstring>#incl...原创 2020-02-07 15:17:48 · 240 阅读 · 0 评论 -
[CERC2014]Virus synthesis
一、题目点此看题二、解法可以发现答案的构成一定是这个样子的:一个回文串,其它暴力填,因为构造回文一定比暴力填要优。设dp[i]dp[i]dp[i]为达到自动机上iii状态所需要的步数,最终的答案是求n+dp[i]−len[i]n+dp[i]-len[i]n+dp[i]−len[i]最小,为了保证更新顺序,我们用队列来更新,更新方法如下:从父节点跳转移而来,也就是 dp[to]=dp[t...原创 2020-02-06 19:17:31 · 266 阅读 · 0 评论 -
[SHOI2011]双倍回文
一、题目点此看题二、解法可以先建出回文自动机,这道题我们需要维护一个transtranstrans指针,表示不超过该回文串12\frac{1}{2}21的最长回文后缀。建自动机的时候,我们先判断该点的长度是否不大于222,是的话transtranstrans就是failfailfail,否则先拿到父亲的transtranstrans,然后看能不能再两边加,还有加之后的长度的两倍不能大于该...原创 2020-02-06 15:54:17 · 225 阅读 · 0 评论 -
[JSOI2013]快乐的 JYY
一、题目点此看题二、解法回文自动机板题,我们先建出两个回文自动机,把每一次的LastLastLast打上标记,然后再对failfailfail树内的标记求和,算出来就是这个点的回文串出现次数。然后我们在两个自动机一起跑,只需要保证经过的转移相同那么就有最后得到的回文串相同,我们把经过的两棵树的出现次数相乘在累加就是答案,注意0,10,10,1都要跑一遍。时间复杂度O(n)O(n)O(n),...原创 2020-02-06 15:12:53 · 332 阅读 · 3 评论
分享