不明白为什么WA了,60分求助TOT
查看原帖
不明白为什么WA了,60分求助TOT
818825
a_lucky_star_of_love楼主2023/7/5 20:46
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
int n,size=1,Trie[20002][26],ans,len[60],w,u,p,js[20002][26],TOT;
char s[6][2002];
inline int max(re int x,re int y){return x>y?x:y;}
int main()
{
	re int i,j,k;
	scanf("%d",&n);
	len[w]=10000;
	for(i=1;i<=n;++i)
	{
		scanf("%s",s[i]);
		len[i]=strlen(s[i]);
		if(len[i]<len[w])w=i;
		TOT|=1<<i;
	}
	u=1;
	for(i=0;i<len[w];++i)
	{
		u=1;
		for(j=i;j<len[w];++j)
		{
			p=s[w][j]-'a';
			if(!Trie[u][p])
			{
				js[u][p]|=1<<w;
				Trie[u][p]=++size;
				u=Trie[u][p];
			}
		}
		
	}
	for(i=1;i<=n;++i)
	{
		if(i==w)continue;
		for(j=0;j<len[i];++j)
		{
			u=1;
			for(k=j;k<len[i];++k)
			{
				p=s[i][k]-'a';
				if(Trie[u][p])
				{
				
					js[u][p]|=1<<i;
					if(js[u][p]==TOT)ans=max(ans,k-j+1);
					u=Trie[u][p];
				}
				else
				break;
			}
		}
	}
	printf("%d\n",ans);
}
2023/7/5 20:46
加载中...