微错,求调,代码有点痞帅
查看原帖
微错,求调,代码有点痞帅
658008
a1a2a3a4a5楼主2025/2/7 20:59

我调不出来!我调不出来!我调不出来!我调不出来!我调不出来!我调不出来!我调不出来!

这是我的:(仅 AC #1)

#include<bits/stdc++.h>
using namespace std;
const int QAQ=2000010;
string s;
long long ans;
vector<int> dian[QAQ];
int tr[QAQ][31],fa[QAQ],cnt,last;
long long len[QAQ],ci[QAQ];
struct xxx
{
	void init() {cnt=1,last=1;}
	void add(int x)
	{
		int p=last,np=++cnt,q,nq;last=np;
		len[np]=len[p]+1,ci[np]=1;
		for(;p&&!tr[p][x];p=fa[p]) tr[p][x]=np;
		if(!p) fa[np]=1;
		else
		{
			q=tr[p][x];
			if(len[q]==len[p]+1) fa[np]=q;
			else
			{
				nq=++cnt;
				for(int i=0;i<26;i++) tr[nq][i]=tr[q][i];
				fa[nq]=fa[q],len[nq]=len[p]+1,fa[q]=fa[np]=nq;
				for(;p&&tr[p][x]==q;p=fa[x]) tr[p][x]=nq;
			}
		}
	}
	void dfs(int x)
	{
		for(int i=0;i<(int)dian[x].size();i++) dfs(dian[x][i]),ci[x]+=ci[dian[x][i]];
		if(ci[x]!=1) ans=max(ans,1ll*ci[x]*len[x]);
	}
	void gowork()
	{
		init();
		for(int i=0;i<(int)s.size();i++) add(s[i]-'a');
		for(int i=2;i<=cnt;i++) dian[fa[i]].push_back(i);
		dfs(1);
		cout<<ans;
	}
} qwp;
signed main() {return cin>>s,qwp.gowork(),0;}

正确代码(抄的)

#include<bits/stdc++.h>
using namespace std;
int lst=1,tot=1;
int trie[2000001][26],cnt[2000001];
int fa[2000001],len[2000001];
long long ans;
void add(int x)
{
	int p=lst;
	int now=lst=++tot;
	cnt[now]=1;
	len[now]=len[p]+1;
	for(;p&&!trie[p][x];p=fa[p])trie[p][x]=now;
	if(!p) fa[now]=1;
	else
	{
		int q=trie[p][x];
		if(len[q]==len[p]+1) fa[now]=q;
		else
		{
			int split=++tot;
			for(int i=0;i<26;++i)
			trie[split][i]=trie[q][i];
			len[split]=len[p]+1;
			fa[split]=fa[q];
			fa[q]=fa[now]=split;
			for(;p&&trie[p][x]==q;p=fa[p])
			trie[p][x]=split;
		}
	}
}
vector<int>road[2000001];
void dfs(int x)
{
	for(int i=0;i<road[x].size();++i) dfs(road[x][i]),cnt[x]+=cnt[road[x][i]];
	if(cnt[x]!=1)
	ans=max(ans,1ll*cnt[x]*len[x]);
}
string s;
signed main()
{
	cin>>s;
	for(int i=0;i<s.size();++i)
	add(s[i]-'a');
	for(int i=2;i<=tot;++i) road[fa[i]].push_back(i);
	dfs(1);
	cout<<ans;
}

一摸一样,下面这个我交了,A 了,非常不好!!!!!!

2025/2/7 20:59
加载中...