比赛 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;
}