manacher算法

原创 2016年08月29日 17:16:30

模板

char s[maxn*2];
int p[maxn*2];
int main(){
    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
    int l,id=0,ml=0;
    gets(s);
    l=strlen(s);
    for(int i=l;i>=0;--i){
        s[i+i+2]=s[i];
        s[i+i+1]='#';
    }
    s[0]='$';
    l=l*2+1;
    for(int i=2;i<l;++i){
        if(p[id]+id>i) p[i]=min(p[id*2-i],p[id]+id-i);
        else p[i]=1;
        while(s[i-p[i]]==s[i+p[i]]) ++p[i];
        if(id+p[id]<i+p[i]) id=i;
        if(ml<p[i]) ml=p[i];
    }
    printf("%d\n",ml-1);
    return 0;
}

题目

  1. 51nod 1089
版权声明:本文为博主原创文章,欢迎转载。

Manacher算法求最长回文

来源:点击打开链接 O(n)回文子串算法     这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法. 原文地址: 点击打开链接     其实原文说得...

求回文子串_O(n)_manacher算法

  • 2013年05月24日 00:17
  • 240KB
  • 下载

BZOJ 3160 万径人踪灭 Manacher算法+快速傅里叶变换

题目大意:给定一个由'a'和'b'构成的字符串,求不连续回文子序列的个数 首先回文一定是将字符串倍增 由于求的是不连续回文子序列的个数 因此我们可以求出总回文子序列的个数,然后减掉连续的 连续的就...
  • PoPoQQQ
  • PoPoQQQ
  • 2014年12月27日 15:20
  • 3992

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

[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=39091399 (CSDN好像有bug,不知道为什么存...

manacher算法计算最长回文子串

manacher算法

hdu 3068 最长回文子串(Manacher算法模板题)

1、http://acm.hdu.edu.cn/showproblem.php?pid=3068 超时错在用了好几次strlen(),改正方法int n=strlen();再次调用时用常量就可以不超...

hdu3068+hdu3294 最长回文字符串的manacher算法

两道题目描述都差不多,关键问题都是求最长回文子串,这里讲解一下manacher算法。...

hdoj 3294 Girls' research 【Manacher算法】【输出最长回文子串 + 字符转化】

Girls' research Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:manacher算法
举报原因:
原因补充:

(最多只允许输入30个字)