求条
查看原帖
求条
941575
Stars_visitor_tyw楼主2024/5/15 17:10
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t, a, b;
string s;
signed main()
{
    for(cin>>t;t;t--)
    {
        int n;
        cin>>a>>b;
        n=a+b;
        cin>>s;
        s=" "+s;
        if(n==1&&s[1]=='?')
        {
            if(a==1)
            {
                cout<<"0\n";
            }
            else
            {
                cout<<"1\n";
            }
            continue;
        }
        else if(n==1)
        {
            if(s[1]=='1'&&b==1)
            {
                cout<<"1\n";
            }
            else if(s[1]=='0'&&a==1)
            {
                cout<<"0\n";
            }
            else
            {
                cout<<"-1\n";
            }
            continue;
        }
        for(int i=1;i<=n;i++)
        {
            if(s[i]=='1')
            {
                b--;
            }
            if(s[i]=='0')
            {
                a--;
            }
        }
        bool f=1;
        for(int i=1;i<=n;i++)
        {
            if(s[i]=='?'&&s[n-i+1]=='?')
            {
                continue;
            }
            if(s[i]=='?')
            {
                s[i]=s[n-i+1];
                if(s[i]=='1')
                {
                    b--;
                }
                else
                {
                    a--;
                }
                if(b<0||a<0)
                {
                    f=0;
                    break;
                }
            }
        }
        if(!f)
        {
            cout<<"-1\n";
            continue;
        }
        for(int i=1;i<=n;i++)
        {
            if(s[i]=='?')
            {
                if(i==n-i+1)
                {
                    if(a>=1)
                    {
                        a-=1;
                        s[i]='0';
                    }
                    else if(b>=1)
                    {
                        b-=1;
                        s[i]='1';
                    }
                    else
                    {
                        f=0;
                        break;
                    }
                    continue;
                }
                if(a>=2)
                {
                    a-=2;
                    s[i]=s[n-i+1]='0';
                }
                else if(b>=2)
                {
                    b-=2;
                    s[i]=s[n-i+1]='1';
                }
                else
                {
                    f=0;
                    break;
                }
            }
        }
        if(!f)
        {
            cout<<"-1\n";
            continue;
        }
        for(int i=1;i<=n;i++)
        {
            if(s[i]!=s[n-i+1])
            {
                f=0;
                break;
            }
        }
        if(!f)
        {
            cout<<"-1\n";
            continue;
        }
        for(int i=1;i<=n;i++)
        {
            cout<<s[i];
        }
        cout<<"\n";
    }
}

第二个点挂了

2024/5/15 17:10
加载中...