zoukankan      html  css  js  c++  java
  • manecher

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char a[1000001],s[2000005];
    int n,l,p[2000005],ans,k=-1,m=1;
    void manacher()
    {
        int pos=0,id=0,x=0;
        for(int i=2;i<=n-2;i++)
        {
            if(pos<=i) x=1;
            else x=min(p[2*id-i],pos-i);
            while(s[i+x]==s[i-x]) x++;
            p[i]=x;
            if(i+x>pos) 
            {
                pos=i+x;
                id=i;
            }
        }
    }
    int main()
    {
        while(cin>>a)
        {
            if(a[0]=='E') return 0;
            ans=0,n=0;
            l=strlen(a);
            s[n++]='%';
            for(int i=0;i<l;i++)
            {
                s[n++]='#';
                s[n++]=a[i];
            }
            s[n++]='#';
            s[n]='@';
            manacher();
            for(int i=1;i<=n;i++) 
             if(ans<p[i]) 
             {
                 ans=p[i];
                 k=i;
             }
            if(s[k]=='#') printf("Case %d: %d
    ",m++,ans/2*2);
            else printf("Case %d: %d
    ",m++,ans/2*2-1);    
        }
    
    }
  • 相关阅读:
    WebService
    JavaMail
    ssh框架整合
    CSS3初步
    SpringMVC 文件上传及下载
    Java多线程
    SpringMVC 数据校验
    初始化参数绑定——日期格式
    SpringMVC入门
    Quartz
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6286728.html
Copyright © 2011-2022 走看看