CF2030B.Minimise Oneness

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Minimise Oneness

题目描述

对于任意二进制字符串 tt,定义 f(t)f(t)tt 的仅包含 0\mathtt{0} 的非空子序列的数量,定义 g(t)g(t)tt 的包含至少一个 1\mathtt{1} 的非空子序列的数量。

注意,对于 f(t)f(t)g(t)g(t),每个子序列出现多少次就计数多少次。例如,f(000)=7f(\mathtt{000})=7g(100)=4g(\mathtt{100})=4

我们定义二进制字符串 tt 的“oneness”为 f(t)g(t)|f(t)-g(t)|,其中对于任意整数 zzz|z| 表示 zz 的绝对值。

给定一个正整数 nn,请你构造一个长度为 nn 的二进制字符串 ss,使得其 oneness 尽可能小。如果有多种方案,可以输出任意一种。

注:
^{\text{∗}} 二进制字符串是仅由字符 0\mathtt{0}1\mathtt{1} 组成的字符串。
^{\text{†}} 序列 aa 是序列 bb 的子序列,如果 aa 可以通过删除 bb 的若干(可能为零或全部)元素得到。例如,1011101\mathtt{1011101} 的子序列有 0\mathtt{0}1\mathtt{1}11111\mathtt{11111}0111\mathtt{0111},但没有 000\mathtt{000}11100\mathtt{11100}

输入格式

第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。

每个测试用例仅一行,包含一个整数 nn1n21051 \leq n \leq 2\cdot10^5),表示 ss 的长度。

保证所有测试用例中 nn 的总和不超过 21052\cdot10^5

输出格式

对于每个测试用例,输出一行长度为 nn 的二进制字符串 ss。如果有多种答案,输出任意一种即可。

说明/提示

在第一个测试用例中,示例输出 f(t)=1f(t)=1,因为只有一个仅包含 0\mathtt{0} 的子序列(0\mathtt{0}),g(t)=0g(t)=0,因为没有包含至少一个 11 的子序列。oneness 为 10=1|1-0|=1。输出 1\mathtt{1} 也是正确的,因为其 oneness 为 01=1|0-1|=1

在第二个测试用例的示例输出中,f(t)=1f(t)=1,因为只有一个仅包含 0\mathtt{0} 的非空子序列,g(t)=2g(t)=2,因为有两个包含至少一个 11 的非空子序列(01\mathtt{01}1\mathtt{1})。oneness 为 12=1|1-2|=1。可以证明,对于所有长度为 22 的二进制字符串,oneness 的最小值为 11

由 ChatGPT 4.1 翻译

样例

3
1
2
3
0
01
010

在线编程 IDE

建议全屏模式获得最佳体验