• HDU 3294 Girls' research


    题目地址

    manacher

     1 #include<cstdio>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 const int Nmax=200005;
     6 char s[Nmax];
     7 char str[Nmax*2+10];
     8 int p[Nmax*2+10];
     9 int hashh[Nmax*2+10];
    10 int id;
    11 int maxlen;
    12 int len;
    13 int start;
    14 int endd;
    15 void init()
    16 {
    17     id=0;
    18     maxlen=0;
    19     int n=strlen(s);
    20     str[0]='$';
    21     str[1]='#';
    22     for(int i=0;i<n;i++)
    23     {
    24         str[i*2+2]=s[i];
    25         hashh[i*2+2]=i;
    26         str[i*2+3]='#';
    27     }
    28     str[n*2+2]='&';
    29     len=n*2+2;
    30 }
    31 
    32 void get()
    33 {
    34     for(int i=2;i<len-2;i++)
    35     {
    36         if(id+p[id]>i)
    37             p[i]=min(p[id*2-i],p[id]+id-i);
    38         else
    39             p[i]=1;
    40         while(str[i-p[i]] == str[i+p[i]])
    41             p[i]++;
    42         if(p[i]+i>p[id]+id)
    43             id=i;
    44         if(p[i]>maxlen)
    45         {
    46             maxlen=p[i];
    47             start=hashh[i-p[i]+2];
    48             endd=hashh[i+p[i]-2];
    49         }
    50     }
    51 }
    52 
    53 int main()
    54 {
    55     char c;
    56     while(scanf("%c",&c)!=EOF)
    57     {
    58         //printf("c:%c
    ",c);
    59         getchar();
    60         scanf("%s",s);
    61         getchar();
    62         init();
    63         get();
    64         if(maxlen-1>=2)
    65         {
    66             printf("%d %d
    ",start,endd);
    67             for(int i=start;i<=endd;i++)
    68             {
    69                 char k=(s[i]-c+26)%26+'a';
    70                 printf("%c",k);
    71             }
    72             printf("
    ");
    73         }
    74         else
    75             printf("No solution!
    ");
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    dnn
    DATAGRID学习
    在.net下的换行符
    treeview
    《25项最优时间管理工具与技巧》
    vim常用操作
    【Google给毕业生的忠告】
    MySQL的安装、使用及权限管理
    各种国际化标准组织
    ubuntu thunderbird 邮箱 163 配置 不能发送问题
  • 原文地址:https://www.cnblogs.com/BBBob/p/5935328.html
Copyright © 2020-2023  润新知