Codeforces Round #724 (Div. 2) B. Prinzessin der Verurteilung(暴力枚举)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #724 (Div. 2) B. Prinzessin der Verurteilung(暴力枚举)相关的知识,希望对你有一定的参考价值。

LINK

显然 m e x \\rm mex mex不会超过 5 5 5,因为 2 6 5 > n ∗ ( n + 1 ) 2 26^5>\\frac{n*(n+1)}{2} 265>2n(n+1)

然后就,枚举一下长度,暴力枚举是否存在该子串就好了

要么用 h a s h + m a p hash+map hash+map判断是否存在,要么用 S A M \\rm SAM SAM判断

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+10;
int t,n;
int las = 1, id = 1, zi[maxn][27], fa[maxn], l[maxn];
void insert(int c)
{
	int p = las, np = ++id; las = id;
	l[np] = l[p]+1;
	for( ; p&&zi[p][c]==0 ; p = fa[p] )	zi[p][c] = np;
	if( !p )	fa[np] = 1;
	else
	{
		int q = zi[p][c];
		if( l[q]==l[p]+1 )	fa[np] = q;
		else
		{
			int nq = ++id; 
			memcpy( zi[nq],zi[q],sizeof zi[q] );
			l[nq] = l[p]+1, fa[nq] = fa[q];
			fa[np] = fa[q] = nq;
			for( ; p&&zi[p][c]==q;p=fa[p] )	zi[p][c] = nq;
		} 
	}
}
char ans[maxn],a[maxn]; int flag;
bool isok(int len)
{
	int u = 1;
	for(int i=1;i<=len;i++)
		if( zi[u][ans[i]-'a'] )	u = zi[u][ans[i]-'a'];
		else	return false;
	return true;
}
void dfs(int len,int ed)
{
	if( flag )	return;
	if( len==ed+1 )
	{
		if( !isok(ed) )	flag = 1;
		return;
	}
	for(int i=0;i<=25;i++)
	{
		ans[len] = char( i+'a' );
		dfs( len+1,ed );
		if( flag )	return;
	}
}
void init()
{
	flag = 0;
	for(int i=1;i<=id;i++)
	{
		memset( zi[i],0,sizeof zi[i] );
		l[i] = fa[i] = 0;
	}
	las = id = 1;
}
int main()
{
	cin >> t;
	while( t-- )
	{
		init();
		scanf("%d%s",&n,a+1 );
		for(int i=1;i<=n;i++)	insert( a[i]-'a' );
		for(int i=1;i<=5;i++)
		{
			dfs( 1,i );
			if( !flag )	continue;
			for(int j=1;j<=i;j++)	printf("%c",ans[j] );
			break;
		}
		printf("\\n");
	}
}

以上是关于Codeforces Round #724 (Div. 2) B. Prinzessin der Verurteilung(暴力枚举)的主要内容,如果未能解决你的问题,请参考以下文章

E. Omkar and Forest——Codeforces Round #724 (Div. 2)

E. Omkar and Forest——Codeforces Round #724 (Div. 2)

F. Omkar and Akmar游戏,组合,逆元—— Codeforces Round #724 (Div. 2)

Codeforces Round #724 (Div. 2)(CD)

Codeforces Round #724 div.2 A-F题解

Codeforces Round #724 div.2 A-F题解