当前位置:网站首页>Codeforces Round #715 (Div. 2) D. Binary Literature

Codeforces Round #715 (Div. 2) D. Binary Literature

2022-07-05 05:27:00 solemntee

Because we know that there must be two strings in three strings 0 The number is greater than or less than n individual .
So we just choose two such strings , Let's see what's inside 0 perhaps 1 Become their common subsequence .
Just happy ac 了 , This is too water

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    char s[4][200005];
    bool visa[200005],visb[200005];
    int n,cnt[4];
    int judge(int a,int b)
    {
    
    // printf("%d %d %d %d %d\n",a,b,cnt[a],cnt[b],n);
        if(cnt[a]>=n&&cnt[b]>=n)return 1;
        else if(cnt[a]<=n&&cnt[b]<=n)return 2;
        else return 0;
    }
    void print(int a,int b,int w)
    {
    
    // printf("%d %d %d\n",a,b,w);
        char c;
        if(w==1)c='0';
        else c='1';
        int pa=1,pb=1;
        while(pa<=2*n||pb<=2*n)
        {
    
            if(s[a][pa]==c&&s[b][pb]==c&&pa<=2*n&&pb<=2*n)
            {
    
                printf("%c",c);
                pa++,pb++;
            }
            else if(s[a][pa]!=c&&pa<=2*n)
            {
    
                printf("%c",s[a][pa]);
                pa++;
            }
            else if(s[b][pb]!=c&&pb<=2*n)
            {
    
                printf("%c",s[b][pb]);
                pb++;
            }
            else if(s[b][pb]==c&&pa>2*n)
            {
    
                printf("%c",c);
                pb++;
            }
            else if(s[a][pa]==c&&pb>2*n)
            {
    
                printf("%c",c);
                pa++;
            }
        }
        printf("\n");
    }
    int main()
    {
    
        int t;
        scanf("%d",&t);
        while(t--)
        {
    
            scanf("%d",&n);
            for(int i=1;i<=3;i++)scanf("%s",s[i]+1);
     
            for(int i=1;i<=3;i++)
            {
    
                cnt[i]=0;
                    for(int j=1;j<=2*n;j++)
                {
    
                    if(s[i][j]=='0')cnt[i]++;
                }
    // cout<<cnt[i]<<endl;
            }
            for(int i=1;i<=3;i++)
            for(int j=1;j<=3;j++)
            {
    
                if(i==j)continue;
                if(judge(i,j))
                {
    
                    print(i,j,judge(i,j));
                    goto endd;
                }
            }
            endd:;
        }
        return 0;
    }
原网站

版权声明
本文为[solemntee]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140621453299.html