CF1898E Sofia and Strings
题目描述
Sofia 有一个长度为 $n$ 的字符串 $s$,该字符串只包含小写英文字母。她可以对这个字符串进行以下两种操作:
1. 选择一个下标 $1 \le i \le |s|$,并从字符串中移除字符 $s_i$。
2. 选择一对下标 $(l, r)$($1 \le l \le r \le |s|$),并将子串 $s_{l} s_{l+1} \ldots s_r$ 按字母顺序排序。
这里 $|s|$ 表示当前字符串 $s$ 的长度。特别地,在第一次操作前有 $|s| = n$。例如,如果 $s = \mathtt{sofia}$,那么执行第一种操作,$i=4$,字符串 $s$ 变为 $\mathtt{sofa}$;之后再对 $(l, r) = (2, 4)$ 执行第二种操作,$s$ 变为 $\mathtt{safo}$。
Sofia 想通过上述零次或多次操作,将字符串 $s$ 变为长度为 $m$ 的字符串 $t$。请判断是否有可能做到。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10\,000$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $m$($1\leq m \leq n \leq 2\cdot 10^5$),分别表示字符串 $s$ 和 $t$ 的长度。
每个测试用例的第二行包含一个长度为 $n$ 的字符串 $s$,只包含小写英文字母。
每个测试用例的第三行包含一个长度为 $m$ 的字符串 $t$,只包含小写英文字母。
保证所有测试用例中 $n$ 的总和不超过 $2\cdot 10^5$。
输出格式
对于每个测试用例,如果 Sofia 能通过上述操作将 $s$ 变为 $t$,输出 "YES";否则输出 "NO"。
输出不区分大小写,例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被认为是肯定的回答。
说明/提示
在第一个测试用例中,Sofia 可以进行如下操作:
1. 对 $l=1$,$r=5$ 执行第二种操作:此时字符串 $s$ 变为 $\mathtt{afios}$。
在第二个测试用例中,Sofia 可以进行如下操作:
1. 对 $l=1$,$r=2$ 执行第二种操作:此时字符串 $s$ 变为 $\mathtt{bca}$;
2. 对 $i=3$ 执行第一种操作:此时字符串 $s$ 变为 $\mathtt{bc}$。
在第三个测试用例中,可以证明无法通过上述操作将 $s$ 变为 $t$。
由 ChatGPT 4.1 翻译