CF1400A String Similarity

题目描述

二进制字符串是指每个字符都是 $0$ 或 $1$ 的字符串。长度相等的两个二进制字符串 $a$ 和 $b$ 被称为相似,如果它们在某个位置上有相同的字符(即存在整数 $i$ 使得 $a_i = b_i$)。例如: - 10010 和 01111 是相似的(它们在第 $4$ 位有相同的字符); - 10010 和 11111 是相似的; - 111 和 111 是相似的; - 0110 和 1001 不是相似的。 现在给定一个整数 $n$ 和一个长度为 $2n-1$ 的二进制字符串 $s$。我们用 $s[l..r]$ 表示 $s$ 的一个连续子串,从第 $l$ 个字符开始,到第 $r$ 个字符结束(即 $s[l..r] = s_l s_{l + 1} s_{l + 2} \dots s_r$)。 你需要构造一个长度为 $n$ 的二进制字符串 $w$,使得 $w$ 与下列所有字符串都相似:$s[1..n]$、$s[2..n+1]$、$s[3..n+2]$、……、$s[n..2n-1]$。

输入格式

第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 50$)。 每个测试用例的第二行包含一个长度为 $2n-1$ 的二进制字符串 $s$。每个字符 $s_i$ 不是 $0$ 就是 $1$。

输出格式

对于每个测试用例,输出一个长度为 $n$ 的二进制字符串 $w$。如果有多个满足条件的字符串,输出任意一个即可。可以保证至少存在一个满足条件的字符串 $w$。

说明/提示

样例的解释(相同字符在相同位置处用加粗表示): 第一个测试用例: - $\mathbf{1}$ 与 $s[1..1] = \mathbf{1}$ 相似。 第二个测试用例: - $\mathbf{000}$ 与 $s[1..3] = \mathbf{000}$ 相似; - $\mathbf{000}$ 与 $s[2..4] = \mathbf{000}$ 相似; - $\mathbf{000}$ 与 $s[3..5] = \mathbf{000}$ 相似。 第三个测试用例: - $\mathbf{1}0\mathbf{10}$ 与 $s[1..4] = \mathbf{1}1\mathbf{10}$ 相似; - $\mathbf{1}01\mathbf{0}$ 与 $s[2..5] = \mathbf{1}10\mathbf{0}$ 相似; - $\mathbf{10}1\mathbf{0}$ 与 $s[3..6] = \mathbf{10}0\mathbf{0}$ 相似; - $1\mathbf{0}1\mathbf{0}$ 与 $s[4..7] = 0\mathbf{0}0\mathbf{0}$ 相似。 第四个测试用例: - $0\mathbf{0}$ 与 $s[1..2] = 1\mathbf{0}$ 相似; - $\mathbf{0}0$ 与 $s[2..3] = \mathbf{0}1$ 相似。 由 ChatGPT 4.1 翻译