首页 > 其他分享 >Codeforces Round #712 A

Codeforces Round #712 A

时间:2022-10-19 13:33:07浏览次数:47  
标签:cnt return NO int Codeforces 712 const Round

A. Balance the Bits

显然对于一个字符串s
我们每一对0之间必须是()一个合法的括号才行)(也可以 显然是等价的 因为你a拿前者 b就会拿后者
所以这就要求了我们0的个数必须是偶数
然后我们贪心的构造1即可
我们前面全填(后面填)
这样必然是最优的
然后最后再判断一下是否合法

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
const int M = 998244353;
const int mod = 1e9+7;
#define int long long
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}
#define endl '\n'
#define all(x) (x).begin(),(x).end()
#define YES cout<<"YES"<<endl;
#define NO cout<<"NO"<<endl;
#define _ 0
#define pi acos(-1)
#define INF 0x3f3f3f3f3f3f3f3f
#define fast ios::sync_with_stdio(false);cin.tie(nullptr);

void solve() {
    int n;cin>>n;
    string s;cin>>s;
    if(std::count(s.begin(), s.end(), '0')%2){NO return;}
    vector<char>a(n),b(n);
    int cnt=0,cnt1=0;
    for(int i=0;i<n;i++){
        if(s[i]=='0'){
            if(cnt1%2){
                a[i]='(';cnt1++;
            }else{
                a[i]=')';cnt++;cnt1++;
            }
        }
    }
    for(int i=n-1;i>=0;i--){
        if(a[i]==')'||a[i]=='(')continue;
        else {
            a[i]=')';cnt++;
            if(cnt==n/2)break;
        }
    }
    for(int i=0;i<n;i++){
        if(a[i]==')'||a[i]=='(')continue;
        a[i]='(';
    }
    int l=0,r=0;
    for(int i=0;i<n;i++){
        if(a[i]=='(')l++;
        else r++;
        if(r>l){
            NO
            return;
        }
    }
    if(l!=r){NO return;}
    for(int i=0;i<n;i++){
        if(s[i]=='1'){
            b[i]=a[i];
        }else{
            if(a[i]==')')b[i]='(';
            else b[i]=')';
        }
    }
    l=0,r=0;
    for(int i=0;i<n;i++){
        if(b[i]=='(')l++;
        else r++;
        if(r>l){
            NO return;
        }
    }
    if(l!=r){NO return;}
    YES
    for(auto i:a)cout<<i;cout<<endl;
    for(auto i:b)cout<<i;cout<<endl;
}
signed main(){
    fast
    int t;t=1;cin>>t;
    while(t--) {
        solve();
    }
    return ~~(0^_^0);
}

标签:cnt,return,NO,int,Codeforces,712,const,Round
From: https://www.cnblogs.com/ycllz/p/16805927.html

相关文章