Ghép xâu con

Đề bài

Mô tả

Cho hai xâu st chỉ gồm các chữ cái latin thường, độ dài lần lượt là nm.

Ta chọn ra một số xâu con liên tiếp của s sao cho chúng đôi một không giao nhau, rồi ghép chúng lại theo đúng thứ tự xuất hiện từ trái sang phải trong s. Gọi f(s,t) là số xâu con ít nhất cần chọn để xâu ghép được bằng đúng t; nếu không tồn tại cách chọn nào thì f(s,t)=.

Cho trước số nguyên x, hãy xác định xem f(s,t)x hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài xâu s.
  • Dòng thứ hai chứa xâu s.
  • Dòng thứ ba chứa số nguyên m là độ dài xâu t.
  • Dòng thứ tư chứa xâu t.
  • Dòng thứ năm chứa số nguyên x.

Dữ liệu ra

In ra YES nếu f(s,t)x, ngược lại in ra NO.

Ràng buộc

  • 1n105
  • 1mn
  • 1x30
  • st chỉ gồm các chữ cái latin thường.

Ví dụ

Input Output Giải thích
9
hloyaygrt
6
loyyrt
2
NO Cần ít nhất 3 xâu con để ghép thành loyyrt, chẳng hạn loy + y + rt. Không có cách nào dùng 2 xâu con, vì khi đó t phải tách thành hai đoạn và cả hai đoạn phải xuất hiện trong s theo đúng thứ tự mà không giao nhau.
9
hloyaygrt
6
loyyrt
3
YES Lấy s2s3s4= loy, s6= y và s8s9= rt. Ghép lại được loyyrt, đúng 3 xâu con nên f(s,t)=33.
10
axxaaaaaxx
5
xaaaa
2
YES Lấy s2= x rồi s4s5s6s7= aaaa, tổng cộng 2 xâu con.

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