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 翻译