#TP00003. Tiền tố dạng dãy con (Prefiquence)
Tiền tố dạng dãy con (Prefiquence)
Tiền tố dạng dãy con (Prefiquence)
Nguồn: Codeforces
Phiên bản: Phước Hưng OJ Extended
Đề bài
Cho hai chuỗi nhị phân và .
Chuỗi nhị phân là chuỗi chỉ gồm hai ký tự 0 và 1.
Với một số nguyên thỏa mãn , tiền tố có độ dài của chuỗi là chuỗi gồm ký tự đầu tiên của :
Khi , tiền tố tương ứng là chuỗi rỗng.
Một chuỗi được gọi là dãy con của chuỗi nếu có thể thu được bằng cách xóa khỏi một số ký tự tùy ý, có thể không xóa ký tự nào hoặc xóa tất cả các ký tự, nhưng không được thay đổi thứ tự tương đối của các ký tự còn lại.
Ví dụ:
10là một dãy con của1110: có thể giữ lại một ký tự1đứng trước ký tự0;100không phải là một dãy con của1110, vì sau khi chọn một ký tự1không thể tìm được hai ký tự0phía sau theo đúng thứ tự;- chuỗi rỗng luôn là dãy con của mọi chuỗi.
Nhiệm vụ của bạn là tìm giá trị lớn nhất của sao cho tiền tố gồm ký tự đầu tiên của chuỗi là một dãy con của chuỗi .
Nói cách khác, cần tìm số lượng lớn nhất các ký tự liên tiếp tính từ đầu chuỗi có thể xuất hiện trong chuỗi đúng thứ tự, nhưng không nhất thiết phải nằm ở các vị trí liên tiếp trong .
Input
Dòng đầu tiên chứa hai số nguyên và — lần lượt là độ dài của chuỗi và chuỗi .
Dòng thứ hai chứa chuỗi nhị phân gồm đúng ký tự.
Dòng thứ ba chứa chuỗi nhị phân gồm đúng ký tự.
Output
In ra một số nguyên lớn nhất sao cho chuỗi:
là một dãy con của chuỗi .
Nếu ngay cả ký tự đầu tiên của cũng không thể xuất hiện trong theo yêu cầu, đáp án bằng .
Subtask
- Subtask 1 — 30% — Time Limit: 2.00 s: ; và là các chuỗi nhị phân.
- Subtask 2 — 70% — Time Limit: 2.00 s: ; và là các chuỗi nhị phân.
Ví dụ
Ví dụ 1
Input
5 4
10011
1110
Output
2
Giải thích
Chuỗi là:
10011.
Tiền tố có độ dài là:
10.
Chuỗi 10 là một dãy con của 1110: ta có thể chọn một ký tự 1 rồi chọn ký tự 0 ở cuối chuỗi.
Tuy nhiên, tiền tố có độ dài của là:
100.
Chuỗi 1110 chỉ có một ký tự 0, nên không thể chọn được hai ký tự 0 sau một ký tự 1 để tạo thành 100.
Vì vậy giá trị lớn nhất của là:
Ví dụ 2
Input
3 3
100
110
Output
2
Giải thích
Tiền tố có độ dài của là 10.
Trong chuỗi 110, có thể chọn một ký tự 1 ở phía trước và ký tự 0 ở cuối để thu được 10.
Nếu xét tiền tố có độ dài là 100, chuỗi không có đủ hai ký tự 0.
Do đó đáp án là .
Ví dụ 3
Input
1 3
1
111
Output
1
Giải thích
Chuỗi chỉ có một ký tự 1.
Chuỗi chứa ký tự 1, nên toàn bộ chuỗi là một dãy con của .
Do đó:
Ví dụ 4
Input
4 4
1011
1111
Output
1
Giải thích
Ký tự đầu tiên của là 1, và 1 xuất hiện trong , nên tiền tố có độ dài là một dãy con của .
Tiền tố có độ dài là:
10.
Chuỗi 1111 không chứa ký tự 0, nên 10 không thể là một dãy con của .
Vì vậy đáp án là .
Ví dụ 5
Input
3 5
100
11010
Output
3
Giải thích
Toàn bộ chuỗi là:
100.
Trong chuỗi 11010, ta có thể chọn lần lượt:
- một ký tự
1; - một ký tự
0đứng sau nó; - một ký tự
0khác đứng sau nữa.
Các ký tự được chọn theo đúng thứ tự tạo thành 100.
Do đó toàn bộ chuỗi là một dãy con của và:
Ví dụ 6
Input
3 1
100
0
Output
0
Giải thích
Ký tự đầu tiên của là 1, trong khi chuỗi chỉ gồm ký tự 0.
Do đó ngay cả tiền tố có độ dài của cũng không phải là dãy con của .
Tiền tố dài nhất thỏa mãn yêu cầu là chuỗi rỗng, có độ dài .
Vì vậy đáp án là: