zoukankan      html  css  js  c++  java
  • hdu 3068 Manacher算法

    题意:求最长回文串,模板题

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 #define cl(a) memset(a,0,sizeof(a))
    13 #define ts printf("*****
    ");
    14 int n,m,tt;const int MAXN=110010;
    15 char Ma[MAXN*2];
    16 int Mp[MAXN*2];
    17 void Manacher(char s[],int len)
    18 {
    19     int l=0;
    20     Ma[l++]='$';
    21     Ma[l++]='#';
    22     for(int i=0;i<len;i++)
    23     {
    24         Ma[l++]=s[i];
    25         Ma[l++]='#';
    26     }
    27     Ma[l]=0;
    28     int mx=0,id=0;
    29     for(int i=0;i<l;i++)
    30     {
    31         Mp[i]=mx>i?min(Mp[2*id-i],mx-i):1;
    32         while(Ma[i+Mp[i]]==Ma[i-Mp[i]])Mp[i]++;
    33         if(i+Mp[i]>mx)
    34         {
    35             mx=i+Mp[i];
    36             id=i;
    37         }
    38     }
    39 }
    40 char s[MAXN];
    41 int main()
    42 {
    43     #ifndef ONLINE_JUDGE
    44     freopen("1.in","r",stdin);
    45     #endif
    46     while(scanf("%s",s)==1)
    47     {
    48         int len=strlen(s);
    49         Manacher(s,len);
    50         int ans=0;
    51         for(int i=0;i<2*len+2;i++)
    52         ans=max(ans,Mp[i]-1);
    53         printf("%d
    ",ans);
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    MVC梳理与总结
    《岛上书店》
    PIL简单图片处理(上)
    Day 3---快捷键
    Day 2---控制快捷键
    Day 1--快捷键
    每天学点Emacs
    swift写ios mvc的小demo
    hexo博客部署到github无法上传的问题
    Django Web开发【7】 投票与评论
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4470354.html
Copyright © 2011-2022 走看看