打算下周讲课就讲Manacher了
所以百度了一下相关题目,发现了一道千古好题
这道题没想到是一道模板题,模板中的模板
简要说一下思路,我们先复制一遍模板(甚至变量都不用改
然后唯一的区别就是要求的是最长连续回文子串长度
那么我们就在Manacher函数里在最后统计一下最大值就行
优秀的代码在这里
#include<bits/stdc++.h> using namespace std; const int N = 21000000; char s[N],str[N]; int p[N],n; int init(){ int len=strlen(s); str[0]='@',str[1]='#'; int j=1; for(int i=0;i<len;++i){ str[++j]=s[i]; str[++j]='#'; } str[++j]='