社区讨论

蒟蒻char数组被卡常64分求助

P3805【模板】Manacher参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo8p8y0l
此快照首次捕获于
2023/10/27 22:19
2 年前
此快照最后确认于
2023/10/27 22:19
2 年前
查看原帖
还有什么可以优化的地方吗?谢谢
CPP
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
using namespace std;
const int N=2e7;
char s2[N],s[N];
int n,d[N],maxr,c,ans=0,cnt=-1;
int main(){
    ios::sync_with_stdio();
    cin>>s2;n=strlen(s2);s[++cnt]='#';s[++cnt]='$';
    n<<=1,n+=2;for(int i=1;i<=n;i+=2) s[++cnt]=s2[(i-1)/2],s[++cnt]='$';
    for(int i=1;i<=n;i++){
        if(i<maxr) d[i]=min(d[(c<<1)-i],maxr-i);
        while(s[i-d[i]-1]==s[i+d[i]+1]) d[i]++;
        if(d[i]+i>maxr) maxr=d[i],c=i;
        ans=max(ans,d[i]);
    }
    cout<<ans;
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...