# manacher板子

#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 100010
using namespace std;

int n;
int d[MAXN];
int st[MAXN*2];
int p[MAXN*2];
int len;
void manacher()
{
int MaxId=0,id;
for(int i=0; i<len; i++)
{
if(MaxId>i)
p[i]=min(p[2*id-i],MaxId-i);
else
p[i]=1;
while(st[i+p[i]]==st[i-p[i]])
p[i]++;
if(p[i]+i>MaxId)
{
id=i;
MaxId=p[i]+i;
}
}
}
int main()
{
int T;
scanf("%d",&T);
for(int t=1; t<=T; t++)
{
scanf("%d",&n);
for(int i = 0; i <= 2*n+1; i++)
p[i] =0;
len = 0;
st[len++]= -2;
st[len++]= -1;
for(int i=1; i<=n; ++i)
{
scanf("%d",&st[len++]);
st[len++] = -1;
}
st[len] = 0;
manacher();
int maxans=1;
for(int i = 3; i < len; i+=2)
for(int j = maxans; j <= p[i]; j+=2)
{
if(p[j+i-1] >= j)
maxans = j;
}
printf("Case #%d: %d\n",t,(maxans)/2*3);
}
return 0;
}</span>

#### manacher（马拉车）算法详解+例题一道【bzoj3790】【神奇项链】

2017-07-28 17:33:13

#### 【POJ3974】Palindrome Manacher、模板题 裸题

2014-12-24 08:56:30

#### Manacher算法及其Java实现

2017-03-14 14:57:36

#### 求最长回文子串的Manacher算法

2011-07-24 22:25:05

#### Manacher算法总结

2014-12-21 16:10:27

#### HDU 3068 最长回文 manacher算法模板

2016-07-23 10:14:05

#### Manacher算法 with c++

2015-12-22 11:14:12

#### Manacher算法详解

2016-08-08 09:45:30

#### manacher算法的实现

2015-06-05 11:51:31