随笔分类 -  字符串->manacher

摘要:题目描述 题解: 这篇题解是关于manacher+SAM的。 PS.PAM已更新。 因为我还不会回文自动机我会学的 SAM支持给出一个串,求出现次数。 manacher支持找回文串。 然后放在一起,当每个节点回文半径扩展时查询。 这样时间是O(n^2)的。 为了时间,我们可以O(nlogn)预处理每 阅读全文
posted @ 2018-12-15 10:23 LiGuanlin 阅读(160) 评论(0) 推荐(0)
摘要:题目描述: Fish是一条生活在海里的鱼。有一天他很无聊,就到处去寻宝。他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进。 通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度为N。 密码仅含小写字母。 以每一个字符为中心的最长回文串长度。 以每两个相邻字符的间隙为中 阅读全文
posted @ 2018-11-30 19:59 LiGuanlin 阅读(237) 评论(0) 推荐(0)
摘要:题目大意: 你有两种机器,一种可以生产回文串,一种可以链接两个串。链接时可以覆盖相同前/后缀。 给出多个串,求最少链接多少次。 题解:先做manacher找出最长回文,然后贪心发现这是线段覆盖。 排序然后搞就行了。 代码: 阅读全文
posted @ 2018-11-25 09:01 LiGuanlin 阅读(125) 评论(0) 推荐(0)
摘要:题目大意: 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。 题解:若X,Y都是回文串且相邻,则共用一个’#‘。 可以对于每个‘#’找出其左边界和右边界。 代码: 阅读全文
posted @ 2018-11-25 08:23 LiGuanlin 阅读(165) 评论(0) 推荐(0)
摘要:题目大意:给出一个长度不大于2e6的字符串,求最长回文串长度。 人话:敲一遍manacher板子。 代码: 阅读全文
posted @ 2018-09-24 08:16 LiGuanlin 阅读(115) 评论(0) 推荐(0)
摘要:给定一个字符串,要求O(n)时间求出其最长回文串长度。 首先我们是会O(n^2)的暴力的,就是枚举每个字符作为对称中心,再枚举相同的相邻字符作为对称中心,然后求得答案。 能不能优化呢? 我们发现,当一个字符串是回文串时,它满足完全对称,比如: abadaba 设p[i]为以i为中心的回文半径,则p为 阅读全文
posted @ 2018-09-18 21:16 LiGuanlin 阅读(135) 评论(0) 推荐(0)