比赛 |
NOIP2023模拟赛3 |
评测结果 |
TTTTATTTTTTTTTTTTTTT |
题目名称 |
收集弹珠 |
最终得分 |
5 |
用户昵称 |
元始天尊 |
运行时间 |
19.000 s |
代码语言 |
C++ |
内存使用 |
5.45 MiB |
提交时间 |
2023-11-15 11:14:58 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int len,Mx=0,n,head=1,tail=1,mx,sum[N],maxum;
char a[N];
string s;
void push(char b)
{
a[tail++]=b;
}
bool empty()
{
if(tail==head) return true;
else return false;
}
int chazhao()
{
memset(a,0,sizeof(a));
for(int i=0;i<len;i++)
{
if(empty())
{
push(s[i]);
}
else
{
if(s[i]!=a[tail-1])
{
mx=max(mx,tail-head);
tail=head;
push(s[i]);
}
else
{
push(s[i]);
}
}
if(i==len-1) mx=max(mx,tail-head);
}
return mx;
}
void search(int x,int y)
{
if(n==0) Mx=chazhao();
for(int i=x;i<=n;i++)
{
for(int j=y;j<=len-1;j++)
{
swap(s[j],s[j+1]);
int tot=chazhao();
if(tot>=len-1||tot==maxum)
{
Mx=tot;
return;
}
Mx=max(tot,Mx);
search(x+1,y+1);
swap(s[j],s[j+1]);
}
}
}
int main()
{
freopen("ball.in","r",stdin);
freopen("ball.out","w",stdout);
cin>>s>>n;
len=s.length();
for(int i=0;i<len;i++)
{
sum[s[i]]++;
maxum=max(maxum,sum[s[i]]);
}
search(1,0);
cout<<Mx<<endl;
return 0;
}