求助,用string一直TLE
查看原帖
求助,用string一直TLE
323130
YEMIYZ楼主2021/10/7 09:24

题解里貌似没有string做法,都是字符数组,难道用string 会一直TLE?我自己测试了一下,貌似是输入就已经超时了

#include<bits/stdc++.h>
using namespace std;
inline string StringRead()
{
    string str;
    char s=getchar();
    while(s==' '||s=='\n'||s=='\r')
        s=getchar();
    while(s!=' '&&s!='\n'&&s!='\r')
    {
        str+=s;
        s=getchar();
    }
    return str;
}
int p[500050];
string s;
int main()
{
	std::ios::sync_with_stdio();
	s=StringRead();
	string t="$";
	for(register int i=0;i<s.length();++i)
		t=t+"#"+s[i];
	t+="#@";
	int n=t.length();
	int id=0,mx=0;
	int ans=-1;
	for(register int j=1;j<n-1;++j)
	{
		p[j]=mx>j?min(p[2*id-j],mx-j):1;
		while(t[j+p[j]]==t[j-p[j]])
			p[j]++;
		if(mx<p[j]+j)
		{
			mx=p[j]+j;
			id=j;
		}
		ans=max(ans,p[j]-1);
	}
	cout<<ans;
	return 0;
}
2021/10/7 09:24
加载中...