社区讨论

94pts TLE on #4 求调

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mj2wq2ys
此快照首次捕获于
2025/12/12 21:32
2 个月前
此快照最后确认于
2025/12/14 15:30
2 个月前
查看原帖
代码:
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
const int P=1e9+7;
const int N=2.2e7+10;

string s;
char g[N];
int d[N];
int n,m,ans,l,r=-1;

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>s;
	n=s.size();
	m=n*2+1;
	for(int i=1;i<=n;i++)g[i*2]=s[i-1];
	g[0]='!',g[m+1]='.';
	for(int i=1;i<=m;i++)if(i%2)g[i]='#';
	for(int i=1;i<=m;i++)
	{
		if(i<=r)
		{
			int j=l+r-i;
			d[i]=min(d[j],r-i+1);
		}
		int k=d[i];
		while(g[i-k]==g[i+k])k++;
		d[i]=k;
		ans=max(ans,d[i]-1);
        l=i-d[i]+1,r=i+d[i]-1;
	}
	cout<<ans<<'\n';
	return 0;
}

回复

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

正在加载回复...