T84求助
查看原帖
T84求助
1069533
sto_clx_orz楼主2023/8/26 09:15
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast") 
using namespace std;

const long long Q=79164837199873;
const int P=29;
vector<long long>a[6];
vector<int>aa;
long long Hash[6][2001],Pow[2001];
int n,ans;
string s[6];

int main()
{
	ios::sync_with_stdio(false),cin.tie(0);
	cin>>n;
	Pow[0]=1;
	for(int i(1);i<=2000;++i)Pow[i]=((__int128_t)Pow[i-1])*P%Q;
	for(int i(1);i<=n;++i)cin>>s[i];
	for(int i(1);i<=n;++i)
		for(int j(1);j<=s[i].size();++j)
		{
			Hash[i][j]=P*Hash[i][j-1]+s[i][j-1]-'a'+1;
			Hash[i][j]%=Q;
			for(int l(0);l<j;++l)
			{
				a[i].push_back(((Hash[i][j]-((__int128_t)Hash[i][l])*Pow[j-l]%Q)+Q)%Q);
				if(i==1)aa.push_back(j-l);
			}
		}
	for(int i(2);i<=n;++i)sort(a[i].begin(),a[i].end());
	for(int x(0);x<a[1].size();++x)
	{
		long long i=a[1][x];
		int o=0;
		for(int j(2);j<=n;++j)
		{
			auto y=lower_bound(a[j].begin(),a[j].end(),i);
			if(y==a[j].end()||*y!=i)
				{
					o=1;
					break;
				}
		}
		if(!o)ans=max(ans,aa[x]);
	}
	cout<<ans;
    return 0;
}
2023/8/26 09:15
加载中...