WA on #10的16 TLE on 1 3 4 8 9 求助
查看原帖
WA on #10的16 TLE on 1 3 4 8 9 求助
578004
02Ljh楼主2022/8/7 18:10
#include <bits/stdc++.h>
using namespace std;
string s,ss;
void r(int i)
{
    if(ss[i]=='A') ss[i]='B';
    else if(ss[i]=='B') ss[i]='A';
    return ;
}
int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    int _;
    cin>>_;
    while(_--)
    {
        int n,a,e;
        s="";
        ss="";
        cin>>n>>a>>e;
        cin>>s;
        ss=s;
        int len=2*n,a_n=0,b_n=0;
        for(int i=0;i<len;i++)
        {
            if(s[i]=='A') a_n++;
            if(s[i]=='B') b_n++;
        }
        if(a_n-e>a) { cout<<"-1\n"; continue; }
        for(int i=0;i<len&&a_n>a;i++)
        {
            if(ss[i]=='A') { r(i); a_n--; }
        }
        int WA=0;
        for(int i=0;i<len;i++)
        {
            if(ss[i]!=s[i]) WA++;
        }
        if(WA==e)
        {
            cout<<ss<<"\n";
            continue;
        }
        //if(WA==e) { cout<<ss<<"\n"; continue; }
        else
        {
            for(int i=0;i<len&&WA!=e;i++)
            {
                if(WA>e&&s[i]==ss[i]) continue;
                if(WA<e&&s[i]!=ss[i]) continue;
                for(int j=i+1;j<len&&WA!=e;j++)
                {
                    if(WA>e&&ss[i]!=s[i]&&ss[i]!=s[j]&&ss[j]!=s[j])
                    {
                        WA-=2;
                        r(i);
                        r(j);
                    }
                    if(WA<e&&ss[i]==s[i]&&ss[i]!=s[j]&&ss[j]==s[j])
                    {
                        WA+=2;
                        r(i);
                        r(j);
                    }
                }
            }
        }
        if(WA==e) { cout<<ss<<"\n"; continue; }
        else cout<<"-1\n";
    }
    return 0;
}

2022/8/7 18:10
加载中...