# 【回文串】HDU 3294 Girls' research manacher算法

O(n) 复杂度

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cmath>
using namespace std;
#include <queue>
#include <stack>
#include <vector>
#include <deque>
#include <set>
#include <map>
#define cler(arr, val)    memset(arr, val, sizeof(arr))
#define FOR(i,a,b)  for(int i=a;i<=b;i++)
#define IN   freopen ("in.txt" , "r" , stdin);
#define OUT  freopen ("out.txt" , "w" , stdout);
typedef long long  LL;
const int MAXN = 510011;
const int MAXM = 6000010;
const int INF = 0x3f3f3f3f;
const LL mod = 2147483647;
const double eps= 1e-8;
const double pi=acos(-1.0);
#define lson l,m, rt<<1
#define rson m+1,r,rt<<1|1
char s[201000];
char c[410200],in;
int p[410002];
int len;
void solve()
{
c[0]='@';
for(int i=0;i<len;i++)
c[i*2+1]='#',c[i*2+2]=s[i]=(s[i]-in+26)%26+'a';
len=2*len+2;
c[len-1]='#';
c[len]=0;
int mx=0,id=0;
for(int i=1;i<len;i++)
{
if(mx>i)
p[i]=min(p[2*id-i],p[id]+id-i);
else p[i]=1;
while(c[i+p[i]]==c[i-p[i]])
p[i]++;
if(i+p[i]>mx)
mx=i+p[i],id=i;
}
int ans=0;
for(int i=1;i<len;i++)
if(p[ans]<p[i]) ans=i;
int len=p[ans]-1;
if(len==1) puts("No solution!");
else
{
int l=(ans+1)/2-1-len/2;
printf("%d %d\n",l,l+len-1);
for(int i=l;i<l+len;i++)
printf("%c",s[i]);
puts("");
}
}
int main()
{
while(scanf("%c %s",&in,s)!=EOF)
{
getchar();
len=strlen(s);
solve();
}
return 0;
}

• 本文已收录于以下专栏：

## hdu 3294 Girls' research Manacher回文串

Girls' research(Manacher) Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I...
• wr132
• 2016年01月22日 22:08
• 271

## HDU 3294 Girls' research (Manacher算法 + 记录区间)

HDU 3294 Girls' research (Manacher算法 + 记录区间)

## HDU3294——Girls' research（manacher算法，马拉车算法）

Girls' research Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)...

## hdu 3294 Girls' research ( manacher+特殊输出格式 )

Girls' research Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)...

## HDU 3294 Girls' research （manacher）

• lwt36
• 2015年11月03日 22:24
• 139

## hdu3068&&hdu3294，回文串，Manacher算法

• cww97
• 2016年04月04日 21:13
• 379

## Girls' research（已完善的Manacher算法模板：输出最长回文子串）

Link：http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit: 3000/1000 MS (...

## HDU3294 Girls' research

Girls' research Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Other...
• d_x_d
• 2016年03月02日 19:16
• 697

## HDU3294:Girls' research

Problem Description One day, sailormoon girls are so delighted that they intend to research about p...

举报原因： 您举报文章：【回文串】HDU 3294 Girls' research manacher算法 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)