• [manacher] hdu 3294 Girls' research


    题意:

    给一个字符x代表真实的a 然后输出的时候转换

    然后就是求最长回文子串的串是什么 长度要大于1

    思路:

    就是裸的manacher,弄清楚下标的转换关系就好了

    代码:

    #include"cstdlib"
    #include"cstdio"
    #include"cstring"
    #include"cmath"
    #include"queue"
    #include"algorithm"
    #include"map"
    #include"vector"
    #include"string"
    #define inf 0x7fffffff
    #include"iostream"
    #define ll __int64
    using namespace std;
    #define N 200005
    char a[N],b[N*2];
    int rad[N*2];
    int main()
    {
        char x[2];
        while(scanf("%s%s",x,&a[1])!=-1)
        {
            int maxl,maxid,id;
            int i,len;
            for(i=1; a[i]; i++)
            {
                b[i*2]=a[i];
                b[i*2+1]='#';
            }
            len=2*i;
            b[0]='?';
            b[1]='#';
            b[len]='';
            maxid=id=0;
            maxl=0;
            int ansi;
            for(i=1; i<len; i++)
            {
                if(maxid>i)  rad[i]=min(rad[2*id-i],maxid-i);
                else  rad[i]=1;
                while(b[i-rad[i]]==b[i+rad[i]])
                {
                    rad[i]++;
                }
                if(rad[i]+i>maxid)
                {
                    maxid=rad[i]+i;
                    id=i;
                }
                if(rad[i]>maxl)
                {
                    maxl=rad[i];
                    ansi=i;
                }
            }
            if(maxl-1<2) puts("No solution!");
            else
            {
                int kk=x[0]-'a';
                int ans=maxl-1,ansl,ansr;
                ansl=(ansi-(ans-1))/2-1;
                ansr=ansl+ans-1;
                printf("%d %d
    ",ansl,ansr);
                for(int i=ansl; i<=ansr; i++)
                {
                    if(a[i+1]-kk<'a') printf("%c",'z'+1-'a'+(a[i+1]-kk));
                    else printf("%c",a[i+1]-kk);
                }
                puts("");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    PostGIS解压版安装
    gulp监听文件变化,并拷贝到指定目录
    pre在火狐中不换行
    Undefined symbols for architecture i386: "_crc32", referenced from:
    响应式自动化开发流程-Windows 版
    Gulp入门教程
    SVG折线图
    git-版本控制
    log4j
    CSS:描述样式
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5322042.html
Copyright © 2020-2023  润新知