随笔分类 -  字符串——manacher

摘要:"传送门" $Maximum\ Remaining$ 对于两个数$a,b$,如果$a=b$没贡献,所以不妨假设$a define R register define fp(i,a,b) for(R int i=(a),I=(b)+1;iI; i) define go(u) for(int i=hea 阅读全文
posted @ 2019-04-15 17:45 bztMinamoto 阅读(283) 评论(2) 推荐(0)
摘要:"传送门" 对$A$、$B$串各跑一遍$manacher$,求出第$1$、$2$类扭动回文串的最大长度。 考虑第三类的扭动回文串$S(i,j,k)$,一定可以表示为$A(i,l)+A(l+1,j)+B(j,k)$或$A(i,j)+B(j,l)+B(l+1,k)$,其中,第一段与第三段对称(第一段正着 阅读全文
posted @ 2018-12-12 12:51 bztMinamoto 阅读(229) 评论(0) 推荐(0)
摘要:传送门 题目所求为所有的不连续回文子序列个数,可以转化为回文子序列数-回文子串数 回文子串manacher跑一跑就行了,考虑怎么求回文子序列数 我们考虑,如果$S_i$是回文子序列的对称中心,那么只要$S_{i-j}$和$S_{i+j}$相等,我们就多了一种选择 设共有$x$组相等的,那么以$S_i 阅读全文
posted @ 2018-10-09 13:26 bztMinamoto 阅读(223) 评论(0) 推荐(0)
摘要:前言 Manacher(也叫马拉车)是一种用于在线性时间内找出字符串中最长回文子串的算法 算法 一般的查找回文串的算法是枚举中心,然后往两侧拓展,看最多拓展出多远。最坏情况下$O(n^2)$ 然而Manacher能够充分利用回文的性质 首先,回文分为奇回文(比如$aba$)和偶回文(比如$abba$ 阅读全文
posted @ 2018-09-11 15:56 bztMinamoto 阅读(555) 评论(1) 推荐(2)

Live2D