trang chủ / bài tập / fromstot

Từ S thành T

Đề bài

Mô tả

Cho ba xâu s, tp gồm các chữ cái Latin thường. Bạn được phép thực hiện thao tác sau một số lần tuỳ ý (có thể là 0 lần):

  • Chọn một ký tự bất kỳ của p, xoá nó khỏi p rồi chèn nó vào s tại vị trí bất kỳ: đầu xâu, cuối xâu, hoặc giữa hai ký tự liên tiếp của s.

Ví dụ, nếu p là aba và s là de thì sau một thao tác ta có thể thu được ade, dae, dea (lấy chữ a), hoặc bde, dbe, deb (lấy chữ b).

Mục tiêu của bạn là thực hiện một dãy thao tác sao cho s trở thành đúng bằng t. Hãy xác định điều đó có khả thi hay không. Lưu ý rằng không bắt buộc phải dùng hết các ký tự của p: những ký tự còn thừa được phép bỏ lại.

q truy vấn độc lập với nhau.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên q: số lượng truy vấn.
  • Mỗi truy vấn được cho bởi ba dòng liên tiếp: dòng thứ nhất chứa xâu s, dòng thứ hai chứa xâu t, dòng thứ ba chứa xâu p.

Dữ liệu ra

Với mỗi truy vấn, in ra trên một dòng riêng chữ YES nếu có thể biến s thành t, ngược lại in ra NO. Đáp án phải viết in hoa.

Ràng buộc

  • 1q100
  • 1|s|,|t|,|p|100
  • s, t, p chỉ gồm các chữ cái Latin thường.

Ví dụ

Input Output Giải thích
4
ab
acxb
cax
a
aaaa
aaabbcc
a
aaaa
aabbcc
ab
baaa
aaaaa
YES
YES
NO
NO
Truy vấn 1: lấy c rồi x từ p, ab → acb → acxb. Truy vấn 2: cần thêm ba chữ a, mà p có đúng ba chữ a (hai chữ b và hai chữ c còn lại được bỏ đi). Truy vấn 3: cần thêm ba chữ a nhưng p chỉ có hai. Truy vấn 4: số lượng ký tự đủ, nhưng thao tác không bao giờ làm thay đổi thứ tự tương đối của các ký tự sẵn có trong s, mà ab không xuất hiện theo đúng thứ tự đó trong baaa.
6
a
aaaa
aaa
a
aaaa
aa
ac
abbbc
bbb
ac
abbbc
bb
ac
abbbc
bbbz
ac
abbbc
bbzz
YES
NO
YES
NO
YES
NO
Ba cặp truy vấn liên tiếp cho thấy ranh giới về số lượng: mỗi cặp chỉ khác nhau ở việc p có đủ hay thiếu đúng một ký tự cần thiết. Hai truy vấn cuối cho thấy ký tự z trong p là vô dụng nhưng vô hại, chỉ số lượng chữ b mới quyết định.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0