码迷,mamicode.com
首页 > 其他好文 > 详细

hdu3068 最长回文 马拉车模板题

时间:2019-03-05 21:16:12      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:lan   str   close   targe   pid   src   code   算法   模板   

题目传送门

马拉车算法模板题。

 

        学习博客

技术图片
#include<bits/stdc++.h>
#define clr(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=110010;
char s[maxn<<1],ne[maxn<<1];
int p[maxn<<1],mx,maxx;
int init(){
    int len=strlen(s),j=0;
    ne[0]=$;
    ne[1]=#;
    j=2;
    for(int i=0;i<len;i++)
    {
        ne[j++]=s[i];
        ne[j++]=#;
    }
    ne[j]=\0;
    return j;
}
int Manacher(){
    int len=init();
    int id;
    mx=0;
    for(int i=1;i<=len;i++)
    {
        if(i<mx){
            p[i]=min(p[2*id-i],mx-i);
        }else p[i]=1;
        while(ne[i-p[i]]==ne[i+p[i]])p[i]++;
        if(mx<i+p[i]){
            mx=i+p[i];
            id=i;
        }
        maxx=max(maxx,p[i]);
    }
    return maxx;
}
int main(){
    while(scanf("%s",s)!=EOF){
        maxx=0;
        Manacher();
        cout<<maxx-1<<endl;
    }
}
View Code

 

hdu3068 最长回文 马拉车模板题

标签:lan   str   close   targe   pid   src   code   算法   模板   

原文地址:https://www.cnblogs.com/mountaink/p/10479480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!