luogu P1723 高手过愚人节

Posted xmex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu P1723 高手过愚人节相关的知识,希望对你有一定的参考价值。

打算下周讲课就将Manacher了

所以百度了一下相关题目,发现了一道千古好题

这道题没想到是一道模板题,模板中的模板


 

简要说一下思路,我们先复制一遍模板(甚至变量都不用改

然后唯一的区别就是要求的是最长连续回文子串长度

那么我们就在Manacher函数里在最后统计一下最大值就行

优秀的代码在这里

#include<bits/stdc++.h>
using namespace std;
const int N = 21000000;
char s[N],str[N];
int p[N],n;
int init(){
    int len=strlen(s);
    str[0]=@,str[1]=#;
    int j=1;
    for(int i=0;i<len;++i){
        str[++j]=s[i];
        str[++j]=#;
    }
    str[++j]=;
    return j;
}
int Manacher(){
    int id=1,mx=1,maxn=0,len=init();
    for(int i=1;i<len;++i){
        if(i<mx) p[i]=min(p[id*2-i],mx-i);
        else p[i]=1;
        while(str[i-p[i]]==str[i+p[i]]) p[i]++;
        if(i+p[i]>mx){
            mx=i+p[i];
            id=i;
        }
        maxn=max(maxn,p[i]-1);//敲黑板,唯一的区别
    }
    return maxn;
}
int main(){
    cin>>n;
    while(n--){
        memset(p,0,sizeof(p));
        cin>>s;
        cout<<Manacher()<<endl;
    }
    return 0;
}

 

以上是关于luogu P1723 高手过愚人节的主要内容,如果未能解决你的问题,请参考以下文章

Luogu2524 Uim的情人节礼物

Luogu P1294 高手去散步

牛客2021年愚人节比赛 题解

Luogu 2575 高手过招-SG函数

洛谷 P2524 Uim的情人节礼物·其之弐 题解

夯实质量,卓越共赢|研发中心测试工具首次集结