社区讨论
蒟蒻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 条回复,欢迎继续交流。
正在加载回复...