Codeforces 1352F - Binary String

2020-05-19  本文已影响0人  费城的二鹏

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

翻译

二进制字符串构建

有一些二进制字符串,所有的长度为 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 长春

上一篇下一篇

猜你喜欢

热点阅读