manacher板子本地+洛谷IDEAC,提交RE求调,悬5关
查看原帖
manacher板子本地+洛谷IDEAC,提交RE求调,悬5关
532109
freedom_wang楼主2024/7/18 18:47
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rop(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define por(i,a,b) for(int i=a;i>b;i--)
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef double lf;
typedef long double ld;
using namespace std;
int cnt,p[22000005],mid,mr,ans;
string s,dat;
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>s;
	s=" "+s;
	dat[++cnt]='~';
	dat[++cnt]='#';
    rep(i,1,s.size()){
		dat[++cnt]=s[i];
		dat[++cnt]='#';
	}
	dat[++cnt]='!';
	rep(i,2,cnt-1){
		if(i<=mr)
			p[i]=min(p[mid*2-i],mr-i+1);
		else
			p[i]=1;
		while(dat[i-p[i]]==dat[i+p[i]])
			p[i]++;
		if(i+p[i]>mr){
			mr=i+p[i]-1;
			mid=i;
		}
		ans=max(ans,p[i]);
	}
	cout<<ans-1;
	return 0;
}
/*
?现在jc方式那么低级啊
*/

2024/7/18 18:47
加载中...