2018ACM-ICPC南京区域赛M---Mediocre String ProblemexKMPManacher

Posted wyboooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018ACM-ICPC南京区域赛M---Mediocre String ProblemexKMPManacher相关的知识,希望对你有一定的参考价值。

技术分享图片

这题就单独写个题解吧。想了两天了,刚刚问了一个大佬思路基本上有了。

题意:

一个串$S$,一个串$T$,在$S$中选一段子串$S[i,j]$,在$T$中选一段前缀$T[1,k]$使得$S[i,j]T[1,k]$拼起来得到的字符串是回文,并且$S$的这个串长度大于$T$的这个。问有多少这样的三元组$(i,j,k)$

思路:

首先我们可以知道我们要找的其实就是这样三个串,$a,b,c$。其中$a$和$c$合起来是$S$中连续的一段子串,$b$在$T$中且$a$和$b$是对称的,$c$一定要是一个回文,且长度至少是$1$。

技术分享图片

第一步比较简单我们可以用manacher求出$S$中的每一个回文。

比如上面图中的下面话的是一个以$i$为中心的回文,假设他的半径是$p$。

那么$i-p$到$i-1$都是满足条件的$a$串的起始点,因为他们后面都接着一段回文。

那么我们把$S$倒过来得到$S‘$,拿$S‘$和$T$跑exkmp,就可以得到$S‘$的每一个后缀和$T$最长公共前缀。

 

以上是关于2018ACM-ICPC南京区域赛M---Mediocre String ProblemexKMPManacher的主要内容,如果未能解决你的问题,请参考以下文章

2018ACM-ICPC亚洲区域赛南京站I题Magic Potion(网络流)

2013 ACM-ICPC亚洲区域赛南京站C题 题解 轮廓线DP

ACM-ICPC 2018 南京网络赛

2018ACM-ICPC焦作区域赛反思总结

2019ACM-ICPC南京网络赛Holy Grail (SPFA模板题)

2019-ACM-ICPC-南京区网络赛-D. Robots-DAG图上概率动态规划