CF2030B.Minimise Oneness
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于任意二进制字符串 t,定义 f(t) 为 t 的仅包含 0 的非空子序列的数量,定义 g(t) 为 t 的包含至少一个 1 的非空子序列的数量。
注意,对于 f(t) 和 g(t),每个子序列出现多少次就计数多少次。例如,f(000)=7,g(100)=4。
我们定义二进制字符串 t 的“oneness”为 ∣f(t)−g(t)∣,其中对于任意整数 z,∣z∣ 表示 z 的绝对值。
给定一个正整数 n,请你构造一个长度为 n 的二进制字符串 s,使得其 oneness 尽可能小。如果有多种方案,可以输出任意一种。
注:
∗ 二进制字符串是仅由字符 0 和 1 组成的字符串。
† 序列 a 是序列 b 的子序列,如果 a 可以通过删除 b 的若干(可能为零或全部)元素得到。例如,1011101 的子序列有 0、1、11111、0111,但没有 000 或 11100。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例仅一行,包含一个整数 n(1≤n≤2⋅105),表示 s 的长度。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一行长度为 n 的二进制字符串 s。如果有多种答案,输出任意一种即可。
输入输出样例
输入#1
3 1 2 3
输出#1
0 01 010
说明/提示
在第一个测试用例中,示例输出 f(t)=1,因为只有一个仅包含 0 的子序列(0),g(t)=0,因为没有包含至少一个 1 的子序列。oneness 为 ∣1−0∣=1。输出 1 也是正确的,因为其 oneness 为 ∣0−1∣=1。
在第二个测试用例的示例输出中,f(t)=1,因为只有一个仅包含 0 的非空子序列,g(t)=2,因为有两个包含至少一个 1 的非空子序列(01 和 1)。oneness 为 ∣1−2∣=1。可以证明,对于所有长度为 2 的二进制字符串,oneness 的最小值为 1。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?