记录编号 584808 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 收集弹珠 最终得分 100
用户昵称 Gravatar小金 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2023-11-15 21:12:52 内存使用 0.00 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
char a[5010];
int n,l[5010],r[5010],b[30],len,ma=0;
void q(int xz,int xy,int z,int y,int s,int n2)
{
	//cout<<s<<' ';
	if((xz-z-1>n2&&y-xy-1>n2)||(z==0&&y==0)||(xz-z-1>n2&&y==0)||(y-xy-1>n2&&z==0))
	{
		if(s>ma)
		{
			ma=s;
		}
		return;
	}
	//cout<<n2<<' '<<z<<' '<<xz<<' ';
	if(z!=0&&xz-z-1<=n2)
	{
		n2-=xz-z-1;
		s++;
		xz--;
		z=l[z];
	}
	//cout<<n2<<' '<<y<<' '<<xy<<' ';
	if(y!=0&&y-xy-1<=n2)
	{
		n2-=y-xy-1;	
		s++;
		xy++;
		y=r[y];
	}
	//cout<<n2<<endl;
	q(xz,xy,z,y,s,n2);
}
int main()
{
	freopen("ball.in","r",stdin);
    freopen("ball.out","w",stdout);
	cin>>a+1;
	cin>>n;
	len=strlen(a+1);
	for(int i=0;i<30;i++)
	{
		b[i]=0;
	}
	for(int i=1;i<=len;i++)
	{
		l[i]=b[a[i]-'A'];
		b[a[i]-'A']=i;
	}
	for(int i=0;i<30;i++)
	{
		b[i]=0;
	}
	for(int i=len;i>=1;i--)
	{
		r[i]=b[a[i]-'A'];
		b[a[i]-'A']=i;
	}
	for(int i=1;i<=len;i++)
	{
		//cout<<i<<'!'<<endl;
		q(i,i,l[i],r[i],1,n);
	}
	cout<<ma;
	return 0;
}