大佬们,菜鸡经历了多重打击以后依旧停留在32分
查看原帖
大佬们,菜鸡经历了多重打击以后依旧停留在32分
181715
gjh303987897楼主2022/9/5 21:14
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
int len_a;
const int maxn = 1.1e7+11;
char a[maxn],b[maxn<<1];
int p[maxn<<1];
void add_str(){
    b[0]='^';
    b[1]='#';
    for(int i=0;i<len_a;i++){
        b[i*2+2]=a[i];
        b[i*2+3]='#';
    }
    b[len_a*2+2]='@';
}
int main(){
    scanf("%s",a);
    len_a=strlen(a);
    add_str();
    int r=0,mid=0;
    int ans=-1;
    int len_b=strlen(b);
    for(int i=1;i<len_b;i++){
        if(r>i){
            p[i]=std::min(p[mid*2-i],r-mid+1);
        }else{
            p[i]=1;
        }
        while(b[i-p[i]]==b[i+p[i]]) ++p[i];
        if(p[i]+i>r){
            r=p[i]+i-1;
            mid=i;
        }
        if(ans<p[i]) ans=p[i];
    }
    std:: cout<<ans-1;
    return 0;
}

2022/9/5 21:14
加载中...