CF1303E.Erase Subsequences

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a string ss. You can build new string pp from ss using the following operation no more than two times:

  1. choose any subsequence si1,si2,…,siks_{i_1}, s_{i_2}, \dots, s_{i_k} where 1≤i1<i2<⋯<ik≤∣s∣1 \le i_1 \lt i_2 \lt \dots \lt i_k \le |s|;
  2. erase the chosen subsequence from ss (ss can become empty);
  3. concatenate chosen subsequence to the right of the string pp (in other words, p=p+si1si2…sikp = p + s_{i_1}s_{i_2}\dots s_{i_k}).

Of course, initially the string pp is empty.

For example, let s=ababcds = \text{ababcd}. At first, let's choose subsequence s1s4s5=abcs_1 s_4 s_5 = \text{abc} — we will get s=bads = \text{bad} and p=abcp = \text{abc}. At second, let's choose s1s2=bas_1 s_2 = \text{ba} — we will get s=ds = \text{d} and p=abcbap = \text{abcba}. So we can build abcba\text{abcba} from ababcd\text{ababcd}.

Can you build a given string tt using the algorithm above?

给你一个字符串 ss。你可以通过以下操作至多两次,从 ss 构造出一个新的字符串 pp:

  1. 任选一个子序列 si1,si2,…,siks_{i_1}, s_{i_2}, \dots, s_{i_k},其中 1≤i1<i2<⋯<ik≤∣s∣1 \le i_1 \lt i_2 \lt \dots \lt i_k \le |s|;
  2. 将该选出的子序列从 ss 中删除(ss 可能变为空);
  3. 将该选出的子序列拼接到字符串 pp 的右侧(即 p=p+si1si2…sikp = p + s_{i_1}s_{i_2}\dots s_{i_k})。

当然,初始时字符串 pp 为空。

例如,设 s=ababcds = \text{ababcd}。第一次操作中,我们选择子序列 s1s4s5=abcs_1 s_4 s_5 = \text{abc},则得到 s=bads = \text{bad},p=abcp = \text{abc}。第二次操作中,我们选择 s1s2=bas_1 s_2 = \text{ba},则得到 s=ds = \text{d},p=abcbap = \text{abcba}。因此,我们可以从 ababcd\text{ababcd} 构造出 abcba\text{abcba}。

你能否使用上述算法构造出给定的字符串 tt?

输入格式

The first line contains the single integer TT (1≤T≤1001 \le T \le 100) — the number of test cases.

Next 2T2T lines contain test cases — two per test case. The first line contains string ss consisting of lowercase Latin letters (1≤∣s∣≤4001 \le |s| \le 400) — the initial string.

The second line contains string tt consisting of lowercase Latin letters (1≤∣t∣≤∣s∣1 \le |t| \le |s|) — the string you'd like to build.

It's guaranteed that the total length of strings ss doesn't exceed 400400.

第一行包含一个整数 TT(1≤T≤1001 \le T \le 100)—— 表示测试用例的数量。

接下来的 2T2T 行包含测试用例,每个测试用例占两行。第一行包含一个由小写拉丁字母组成的字符串 ss(1≤∣s∣≤4001 \le |s| \le 400)—— 初始字符串。

第二行包含一个由小写拉丁字母组成的字符串 tt(1≤∣t∣≤∣s∣1 \le |t| \le |s|)—— 你希望构造出的目标字符串。

保证所有字符串 ss 的总长度不超过 400400。

输出格式

Print TT answers — one per test case. Print YES (case insensitive) if it's possible to build tt and NO (case insensitive) otherwise.

输出 TT 个答案——每个测试用例一个答案。如果能够构造出 tt,则输出 YES(不区分大小写);否则输出 NO(不区分大小写)。

输入输出样例

  • 输入#1

    4
    ababcd
    abcba
    a
    b
    defi
    fed
    xyz
    x

    输出#1

    YES
    NO
    NO
    YES

输入解题思路,AI测评打分。不知道怎么写?

首页