美文网首页
Codeforces 1352F - Binary String

Codeforces 1352F - Binary String

作者: 费城的二鹏 | 来源:发表于2020-05-19 11:58 被阅读0次

    视频原创标识开通,害我白激动了,也不知道我的图文原创声明什么时候能开通。

    翻译

    二进制字符串构建

    有一些二进制字符串,所有的长度为 2 的子串都被书写出来,每一对子串计算 1 的数量。

    给你三个数字:

    • n0 - 有 0 个 1 的子串对数量
    • n1 - 有 1 个 1 的子串对数量
    • n2 - 有 2 个 1 的子串对数量

    你的任务是根据给出的 n0, n1, n2 构造出符合要求的答案,可以保证这三个数字的和大于 1 ,并且保证可以构造出答案。

    输入格式

    第一行包含一个整数 t,表示测试用例的组数。

    每组测试用例输入一行三个数字,n0 n1 n2 用空格分割。

    输出格式

    输出 t 行,每行是每组测试用例的答案

    分析

    又是一道简单的构造题。

    1. n0 的和 n2 的字符串应该挨着,这样中间就有一个n1
    2. 构造 n1 前应该特判,如果 n0 和 n2 均为0,则可以自由构建,否则需要依据尾部数字构建

    例如:1 3 5

    1. 首先构建 00
    2. 然后构建 00111111 这样 1 和 5 就出来了并且带出了 一个 01
    3. 接着构建 0011111101 只需要补全两个 n1 即可

    代码(PyPy3)

    # https://codeforces.com/problemset/problem/1352/G
    
    import sys
    
    # sys.stdin = open(r"./file/input.txt", 'r')
    # sys.stdout = open(r"./file/output.txt", 'w')
    
    t = int(input())
    
    for _ in range(t):
        arr = list(map(int, input().split(" ")))
        a = arr[0]
        b = arr[1]
        c = arr[2]
    
        result = ""
    
        end = -1
        if a > 0:
            result += "0" * (a + 1)
            end = 0
    
        if c > 0:
            result += "1" * (c + 1)
            end = 1
    
        if end == -1:
            result = "1"
            end = 1
    
        if "01" in result:
            b -= 1
    
        for _ in range(b):
            if end == 1:
                result += "0"
            else:
                result += "1"
            end = 1 - end
    
        print(result)
    

    更多代码尽在 https://github.com/Tconan99/Codeforces

    by 费城的二鹏 2020.05.14 长春

    相关文章

      网友评论

          本文标题:Codeforces 1352F - Binary String

          本文链接:https://www.haomeiwen.com/subject/rejxohtx.html