trang chủ / đề bài / erasesub

Xoá dãy con

Đề bài

Mô tả

Cho một xâu s gồm các chữ cái Latin thường. Bạn có thể xây dựng một xâu p mới từ s bằng cách áp dụng thao tác sau tối đa hai lần:

  1. Chọn một dãy con si1,si2,…,sik với 1≤i1<i2<…<ik≤|s|.
  2. Xoá dãy con đã chọn khỏi s (xâu s có thể trở thành rỗng).
  3. Nối dãy con đã chọn vào bên phải xâu p, tức là p=p+si1si2…sik.

Ban đầu p là xâu rỗng.

Ví dụ, cho s=ababcd. Lần đầu chọn dãy con s1s4s5=abc, ta được s=bad và p=abc. Lần thứ hai chọn dãy con s1s2=ba, ta được s=d và p=abcba. Vậy có thể xây dựng p=abcba từ s=ababcd.

Cho xâu đích t, hãy xác định xem có thể xây được p=t bằng thuật toán trên hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên T — số lượng test.
  • Với mỗi test:
    • Dòng thứ nhất chứa xâu s gồm các chữ cái Latin thường.
    • Dòng thứ hai chứa xâu t gồm các chữ cái Latin thường.

Dữ liệu ra

Với mỗi test, in ra một dòng duy nhất: YES nếu có thể xây được p=t, ngược lại in NO. Chữ hoa hay chữ thường đều được chấp nhận.

Ràng buộc

  • 1≤T≤100
  • 1≤|t|≤|s|≤400
  • Tổng độ dài các xâu s trên tất cả các test không vượt quá 400.

Ví dụ

Input Output Giải thích
4
ababcd
abcba
a
b
defi
fed
xyz
x
YES
NO
NO
YES
Test 1 đã minh hoạ ở phần đề. Test 2: s=a không chứa ký tự b. Test 3: s=defi không có cách nào ghép được fed vì f đứng sau e và d. Test 4: chọn dãy con gồm một ký tự x.
3
ababc
abcba
feded
defed
ababcfeded
abcdebafed
YES
YES
YES
Các test đều có thể tách t thành hai đoạn liên tiếp, mỗi đoạn là một dãy con của phần còn lại của s (các dãy con phải đôi một rời nhau).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0