CF1303E Erase Subsequences

题目描述

给定一个字符串 $s$。你可以对 $s$ 进行如下操作,最多不超过两次,从而构造出一个新字符串 $p$: 1. 选择任意一个子序列 $s_{i_1}, s_{i_2}, \dots, s_{i_k}$,其中 $1 \le i_1 < i_2 < \dots < i_k \le |s|$; 2. 从 $s$ 中删除所选的子序列($s$ 可能变为空); 3. 将所选的子序列拼接到字符串 $p$ 的右侧(即 $p = p + s_{i_1}s_{i_2}\dots s_{i_k}$)。 初始时,字符串 $p$ 为空。 例如,设 $s = \text{ababcd}$。第一次选择子序列 $s_1 s_4 s_5 = \text{abc}$,此时 $s = \text{bad}$,$p = \text{abc}$。第二次选择 $s_1 s_2 = \text{ba}$,此时 $s = \text{d}$,$p = \text{abcba}$。因此,可以从 $\text{ababcd}$ 构造出 $\text{abcba}$。 请判断,是否可以通过上述算法构造出给定的字符串 $t$?

输入格式

第一行包含一个整数 $T$($1 \le T \le 100$),表示测试用例的数量。 接下来的 $2T$ 行,每两行为一个测试用例。第一行包含一个仅由小写拉丁字母组成的字符串 $s$($1 \le |s| \le 400$),表示初始字符串。 第二行包含一个仅由小写拉丁字母组成的字符串 $t$($1 \le |t| \le |s|$),表示你希望构造的字符串。 保证所有字符串 $s$ 的总长度不超过 $400$。

输出格式

输出 $T$ 行答案,每行对应一个测试用例。如果可以构造出 $t$,输出 YES(不区分大小写);否则输出 NO(不区分大小写)。

说明/提示

由 ChatGPT 4.1 翻译