CF1890B Qingshan Loves Strings
题目描述
青山有一个字符串 $s$,而 Daniel 有一个字符串 $t$。两个字符串都只包含 $\texttt{0}$ 和 $\texttt{1}$。
一个长度为 $k$ 的字符串 $a$ 是“好”的,当且仅当:
- 对于所有 $i=1,2,\ldots,k-1$,都有 $a_i \ne a_{i+1}$。
例如,$\texttt{1}$、$\texttt{101}$、$\texttt{0101}$ 是“好”的,而 $\texttt{11}$、$\texttt{1001}$、$\texttt{001100}$ 不是“好”的。
青山想让 $s$ 变成“好”的。为此,她可以进行如下操作任意次(也可以不做):
- 在 $s$ 的任意位置插入 $t$(得到一个新的 $s$)。
请你告诉青山,是否有可能通过若干次操作使 $s$ 变成“好”的。
输入格式
输入包含多组测试数据。第一行包含一个整数 $T$($1\le T\le 2000$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n,m \le 50$),分别表示字符串 $s$ 和 $t$ 的长度。
第二行包含一个长度为 $n$ 的字符串 $s$。
第三行包含一个长度为 $m$ 的字符串 $t$。
保证 $s$ 和 $t$ 只包含 $\texttt{0}$ 和 $\texttt{1}$。
输出格式
对于每个测试用例,如果有可能将 $s$ 变成“好”的,输出 "YES"(不带引号);否则输出 "NO"(不带引号)。
输出字母大小写均可。
说明/提示
在第一个测试用例中,$s$ 本身就是“好”的,因此可以不进行任何操作。
在第二个测试用例中,你可以进行如下两次操作(插入的字符串 $t$ 用下划线表示):
1. $\texttt{1}\underline{\texttt{010}}\texttt{11}$
2. $\texttt{10101}\underline{\texttt{010}}\texttt{1}$
最终得到 $s = \texttt{101010101}$,这是一个“好”的字符串。
在第三个测试用例中,无论进行多少次操作,都无法使 $s$ 变成“好”的字符串。
由 ChatGPT 4.1 翻译