网站建设模块方案书,潍坊网站建设方案推广,做彩票网站代理犯法吗6,更换dns能上国外网站吗正题
题目链接:https://www.luogu.com.cn/problem/P4555 题目大意
长度为nnn的串#xff0c;双回文串的定义是两个连续的回文串#xff0c;求最长的双回文串。 解题思路
我们用马拉车维护pip_ipi的时候维护一个lil_ili和rir_iri。 li:l_i:li:以iii开头的最长回文串…正题
题目链接:https://www.luogu.com.cn/problem/P4555 题目大意
长度为nnn的串双回文串的定义是两个连续的回文串求最长的双回文串。 解题思路
我们用马拉车维护pip_ipi的时候维护一个lil_ili和rir_iri。
li:l_i:li:以iii开头的最长回文串 rir_iri以iii结尾的最长回文串。
然后ansmax{liri}(imod20)ansmax\{l_ir_i\}(i\ mod\ 20)ansmax{liri}(i mod 20) codecodecode
#includecstdio
#includecstring
#includealgorithm
using namespace std;
const int N2e510;
int m,n,p[N],l[N],r[N],ans;
char s[N],a[N];
int main()
{scanf(%s,s1);mstrlen(s1);a[n]$;a[n]#;for(int i1;im;i)a[n]s[i],a[n]#;s[n];int mid0,mr0;for(int i1;in;i){if(imr) p[i]min(p[mid*2-i],mr-i);else p[i]1;while(a[i-p[i]]a[ip[i]])p[i];if(mrip[i]) mrip[i],midi;l[ip[i]-1]max(l[ip[i]-1],p[i]-1);r[i-p[i]1]max(r[i-p[i]1],p[i]-1);}for(int i2;in;i2)r[i]max(r[i],r[i-2]-2);for(int in;i2;i-2)l[i]max(l[i],l[i2]-2);for(int i2;in;i2)if(l[i]r[i])ansmax(ans,l[i]r[i]);printf(%d,ans);
}