Đếm xuất hiện không chồng lấp

Đề bài

Mô tả

Cho hai xâu S và P chỉ gồm chữ cái thường. Một xuất hiện của P trong S là một vị trí i sao cho S[i…i+|P|−1]=P (chỉ số tính từ 1).

Hãy đếm số xuất hiện không chồng lấp lớn nhất có thể chọn của P trong S. Hai xuất hiện tại vị trí i và j (với i<j) gọi là không chồng lấp nếu j≥i+|P|.

Có thể chứng minh rằng số lượng tối đa đạt được nhờ chiến lược tham lam: quét S từ trái sang phải, mỗi khi gặp xuất hiện thì lấy luôn và bỏ qua |P| ký tự của xuất hiện đó.

Dữ liệu vào

  • Dòng 1: xâu S.
  • Dòng 2: xâu P.

Dữ liệu ra

Một số nguyên duy nhất: số xuất hiện không chồng lấp tối đa.

Ràng buộc

  • 1≤|S|,|P|≤106
  • Cả S và P chỉ gồm chữ cái Latin thường (a–z).

Ví dụ

Input Output Giải thích
ababa
aba
1 Có 2 xuất hiện tại vị trí 1 và 3 nhưng chúng chồng lấp; chiến lược tham lam chọn xuất hiện tại 1 và bỏ qua 3 ký tự, không còn xuất hiện nào nữa.
aaaaa
aa
2 Tham lam: lấy vị trí 1 (phủ {1,2}), tiếp theo lấy vị trí 3 (phủ {3,4}). Vị trí 5 không đủ độ dài.
aaabaaab
aab
2 Lấy vị trí 2 (phủ {2,3,4}) và vị trí 6 (phủ {6,7,8}).

Ghi chú

  • Bài này khác với việc đếm có chồng lấp (ví dụ trong aaaa với mẫu aa đáp số chồng lấp là 3 nhưng không chồng lấp chỉ là 2).

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