CF1744A Number Replacement

题目描述

一个整数数组 $a_1, a_2, \ldots, a_n$ 正在通过以下过程被转换为一个由小写英文字母组成的数组: 只要数组中至少还有一个数字,重复以下操作: - 从数组 $a$ 中任选一个数字 $x$,以及英文字母表中的任意一个字母 $y$。 - 将数组中所有等于 $x$ 的数字都替换为字母 $y$。 例如,初始数组 $a = [2, 3, 2, 4, 1]$,可以按如下方式进行转换: - 选择数字 $2$ 和字母 c,操作后 $a = [c, 3, c, 4, 1]$。 - 选择数字 $3$ 和字母 a,操作后 $a = [c, a, c, 4, 1]$。 - 选择数字 $4$ 和字母 t,操作后 $a = [c, a, c, t, 1]$。 - 选择数字 $1$ 和字母 a,操作后 $a = [c, a, c, t, a]$。 转换完成后,所有字母会合并成一个字符串,在本例中得到字符串 "cacta"。 给定数组 $a$ 和字符串 $s$,判断能否通过上述过程将数组 $a$ 转换为字符串 $s$。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^3$),表示测试用例的数量。 接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 50$),表示数组 $a$ 和字符串 $s$ 的长度。 第二行包含恰好 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 50$),表示数组 $a$ 的元素。 第三行包含一个长度为 $n$ 的字符串 $s$,仅由小写英文字母组成。

输出格式

对于每个测试用例,如果可以将数组 $a$ 转换为字符串 $s$,输出 "YES";否则输出 "NO"。输出时字母大小写均可。

说明/提示

第一个测试用例对应题目描述中的示例。 在第二个测试用例中,可以选择数字 $50$ 和字母 a。 在第三个测试用例中,可以先选择数字 $11$ 和字母 a,操作后 $a = [a, 22]$。然后选择数字 $22$ 和字母 b,得到 $a = [a, b]$。 在第五个测试用例中,可以将所有数字依次替换为字母 a。 由 ChatGPT 4.1 翻译