zoukankan      html  css  js  c++  java
  • HDOJ 3068 最长回文

    manacher。。。。。。。。。。。。。。。。。。。。

    最长回文

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 5240    Accepted Submission(s): 1784


    Problem Description
    给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.
    回文就是正反读都是一样的字符串,如aba, abba等
     

    Input
    输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S
    两组case之间由空行隔开(该空行不用处理)
    字符串长度len <= 110000
     

    Output
    每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度.
     

    Sample Input
    aaaa

    abab
     

    Sample Output
    4
    3
     

    Source
     

    Recommend
    lcy
      

    #include <iostream>
    #include <cstdio>
    #include <cstring>

    using namespace std;

    char s[111000];
    char str[224000];
    int p[224000];

    void change(char s[111000],char* str,int len)
    {
        str[0]='@';
        str[1]='#';
        int tot=1;
        for(int i=0;i<len;i++)
        {
            tot++;
            str[tot]=s;
            tot++;
            str[tot]='#';
        }
        str[++tot]='';
    }

    void manacher(int *p,char *s,int len)
    {
        int mid=0,mx=0;
        for(int i=0;i<len;i++)
        {
            if(mx>i)
            {
                p=min(p[2*mid-i],mx-i);
            }
            else p=1;

            while(s[i+p]==s[i-p])
            {
                p++;
            }

            if(p+i>mx)
            {
                mx=p+i;
                mid=i;
            }
        }
    }

    int main()
    {
    while(scanf("%s",s)!=EOF)
    {
        int len=strlen(s);
        change(s,str,len);
     //   cout<<str<<endl;
        memset(p,0,sizeof(p));

        len=strlen(str);

        manacher(p,str,len);

        int ans=1;
        for(int i=0;i<len;i++)
        {
            ans=max(ans,p);
     //       cout<<p;
        }
     //    cout<<endl;

         printf("%d ",ans-1);
    }

        return 0;
    }
     
  • 相关阅读:
    Spring系列(六):Spring事务源码解析
    Spring系列(五):Spring AOP源码解析
    Spring系列(四):Spring AOP详解
    Spring系列(三):Spring IoC源码解析
    Spring IoC源码解析之getBean
    Spring IoC源码解析之invokeBeanFactoryPostProcessors
    Spring系列(二):Spring IoC应用
    HDU-1276
    Codeforces Round #410 (Div. 2)-A
    ubuntu16.04安装wps
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350954.html
Copyright © 2011-2022 走看看