CF1400A.String Similarity

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

String Similarity

题目描述

二进制字符串是指每个字符都是 0011 的字符串。长度相等的两个二进制字符串 aabb 被称为相似,如果它们在某个位置上有相同的字符(即存在整数 ii 使得 ai=bia_i = b_i)。例如:

  • 10010 和 01111 是相似的(它们在第 44 位有相同的字符);
  • 10010 和 11111 是相似的;
  • 111 和 111 是相似的;
  • 0110 和 1001 不是相似的。

现在给定一个整数 nn 和一个长度为 2n12n-1 的二进制字符串 ss。我们用 s[l..r]s[l..r] 表示 ss 的一个连续子串,从第 ll 个字符开始,到第 rr 个字符结束(即 s[l..r]=slsl+1sl+2srs[l..r] = s_l s_{l + 1} s_{l + 2} \dots s_r)。

你需要构造一个长度为 nn 的二进制字符串 ww,使得 ww 与下列所有字符串都相似:s[1..n]s[1..n]s[2..n+1]s[2..n+1]s[3..n+2]s[3..n+2]、……、s[n..2n1]s[n..2n-1]

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n501 \le n \le 50)。

每个测试用例的第二行包含一个长度为 2n12n-1 的二进制字符串 ss。每个字符 sis_i 不是 00 就是 11

输出格式

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

说明/提示

样例的解释(相同字符在相同位置处用加粗表示):

第一个测试用例:

  • 1\mathbf{1}s[1..1]=1s[1..1] = \mathbf{1} 相似。

第二个测试用例:

  • 000\mathbf{000}s[1..3]=000s[1..3] = \mathbf{000} 相似;
  • 000\mathbf{000}s[2..4]=000s[2..4] = \mathbf{000} 相似;
  • 000\mathbf{000}s[3..5]=000s[3..5] = \mathbf{000} 相似。

第三个测试用例:

  • 1010\mathbf{1}0\mathbf{10}s[1..4]=1110s[1..4] = \mathbf{1}1\mathbf{10} 相似;
  • 1010\mathbf{1}01\mathbf{0}s[2..5]=1100s[2..5] = \mathbf{1}10\mathbf{0} 相似;
  • 1010\mathbf{10}1\mathbf{0}s[3..6]=1000s[3..6] = \mathbf{10}0\mathbf{0} 相似;
  • 10101\mathbf{0}1\mathbf{0}s[4..7]=0000s[4..7] = 0\mathbf{0}0\mathbf{0} 相似。

第四个测试用例:

  • 000\mathbf{0}s[1..2]=10s[1..2] = 1\mathbf{0} 相似;
  • 00\mathbf{0}0s[2..3]=01s[2..3] = \mathbf{0}1 相似。

由 ChatGPT 4.1 翻译

样例

4
1
1
3
00000
4
1110000
2
101
1
000
1010
00

在线编程 IDE

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