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;
    }
     
  • 相关阅读:
    string整理
    1295 N皇后问题
    排序整理
    Debian下Cannot set LC_CTYPE to default locale: No such file or directory解决方法
    9012,9013三极管总结
    android selector设置button点击效果(具体)以及常见问题
    C语言keywordstatic的绝妙用途
    Activity的launchMode和任务栈小结
    基于matlab的音频波形实时採集显示 v0.1
    how tomcat works读书笔记 七 日志记录器
  • 原文地址:https://www.cnblogs.com/CKboss/p/3350954.html
Copyright © 2011-2022 走看看