字符数组50分求助,悬一关
查看原帖
字符数组50分求助,悬一关
1112010
Ethan812820楼主2024/7/1 16:50
#include<bits/stdc++.h>
#define int long long
using namespace std;
int ans=0,p[25000005],s[20000005];
signed main(){
	//freopen("P1723_5.in","r",stdin);
	//freopen("P1723_5(1).out","w",stdout);
    int t;
    cin>>t;
    while(t--){
    	int sz=0;
    	s[sz++]='^';
    	s[sz++]='|';
    	char cc=0;
    	while(cc<32) cc=getchar();
    	s[sz++]=cc;
    	while(cc=getchar()){
    		if(cc>=32){
    			s[sz++]='|';
    			s[sz++]=cc;
    		}
    		else{
    			break;
    		}
    	}
    	s[sz++]='|';
    	s[sz++]='&';
    	int ans=1,r=0,c=0;
    	for(int i=1;i<=sz-2;i++){
    		if(i<=r) p[i]=min(p[c*2-i],r-i);
    		while(s[i+p[i]+1]==s[i-p[i]-1]) p[i]++;
    		if(i+p[i]>r){
    			r=i+p[i];
    			c=i;
    		}
    	}
    	for(int i=1;s[i+1]!='\0';i++){
    		ans=max(ans,p[i]);
    	}
    	cout<<ans<<"\n";
    	for(int i=0;i<sz;i++) s[i]=0;
    }
	return 0;
}

记录

2024/7/1 16:50
加载中...