zoukankan      html  css  js  c++  java
  • Codeforces 1492D

    Codeforces Round #704 (Div. 2) D. Genius's Gambit


    题意

    要求构造出两个不包含前导0的二进制数字(x,y),满足:

    • (x,y)都具有(a)(0)(b)(1)
    • (x-y)具有(k)(1)

    限制

    (age 0)

    (bge 1)

    (0le kle a+ble 2cdot 10^5)




    思路

    显然的,由于要求(x,y)不包含前导(0),故两数字最高位必定为(1)


    特殊讨论(k=0)时,根据上述约束,直接输出两个字符串即可

    注意先输出(b)(1)再输出(a)(0)


    否则,观察样例,自己多写几个例子,可以发现这个规律

    pic

    中间位对应都相同时,计算减法可以直接当作(X-X=0)

    那么假如这一段的长度为(t),减数最高位为(1),被减数最低位为(1),其余(t-1)个位置均为(0)

    那做减法得到的结果即(2^{t-1}-1),其二进制则包含(t-1)(1)


    那么只要(k eq 0),就需要保证至少要有(2)(1)(1)(0),且(kle a+b-2)

    答案总体可以分成以下三个部分(其中后两个部分位置可以随意调换)

    pic2




    程序

    #include<bits/stdc++.h>
    using namespace std;
    
    void solve()
    {
        int a,b,k;
        cin>>a>>b>>k;
        
        if(k==0)
        {
            cout<<"Yes
    ";
            for(int i=1;i<=b;i++) cout<<1;
            for(int i=1;i<=a;i++) cout<<0;
            cout<<'
    ';
            for(int i=1;i<=b;i++) cout<<1;
            for(int i=1;i<=a;i++) cout<<0;
            cout<<'
    ';
            return;
        }
        
        if(a<1||b<2||k>a+b-2)
        {
            cout<<"No
    ";
            return;
        }
        
        string x="1",y="1";
        b--;
        
        x+='1',y+='0';
        a--,b--;
        
        for(int i=1;i<k;i++)
        {
            if(a>0)
            {
                a--;
                x+='0',y+='0';
            }
            else if(b>0)
            {
                b--;
                x+='1',y+='1';
            }
        }
        
        x+='0',y+='1';
        
        while(a--)
            x+='0',y+='0';
        while(b--)
            x+='1',y+='1';
        
        cout<<"Yes
    "<<x<<'
    '<<y<<'
    ';
    }
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);cout.tie(0);
        solve();
        return 0;
    }
    

    https://blog.csdn.net/qq_36394234/article/details/113999097

  • 相关阅读:
    Spark ML 文本的分类
    Linxu 安装Scala
    Nginx访问非常慢
    mysql:unknown variable 'default-character-set=utf8'
    mysql 1045
    mysql: error while loading shared libraries: libnuma.so
    elasticsearch: can not run elasticsearch as root
    Java中的Class类
    ClassLoader工作机制
    遍历机器查日志
  • 原文地址:https://www.cnblogs.com/stelayuri/p/14437470.html
Copyright © 2011-2022 走看看