代码TLE 2个点,求助,悬关!!
查看原帖
代码TLE 2个点,求助,悬关!!
656765
STARSczy楼主2023/8/18 23:52
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=3e7+10,mod=1e9+7;
inline int read(){
	int c,w=0,n=0;
	while((c=getchar())<'0'||'9'<c) w=c=='-';
	do n=n*10+c-'0';while('0'<=(c=getchar())&&c<='9');
	return w?-n:n;
}
inline int write(int n){
	if(n<0) putchar('-'),n=-n;
	if(n>9) write(n/10);
	putchar(n%10+'0');
	return n;
}

int a[maxn],p=1,ans;
char s[maxn];

signed main(){
	cin>>s;
	for(int i=strlen(s)-1;~i;--i) s[i<<1|1]=s[i],s[i<<1]='|';
	s[0]='~';
	for(int i=1,mid=1,l=0;s[i];++i){
		if(i<=mid+l-1) a[i]=min(a[mid+l-i],mid+l-i);
		for(;s[i+a[i]]==s[i-a[i]];a[i]++);
		if(i+a[i]>mid+l) mid=i,l=a[i];
		if(s[i]=='|') ans=max(ans,a[i]/2*2);
		else ans=max(ans,(a[i]-1)/2*2+1);
	}
	write(ans);
	return 0;
}//cfcffcfcfcfc
2023/8/18 23:52
加载中...