Đếm xâu theo mảng hậu tố
Đề bài
Mô tả
Cho một mảng hậu tố (suffix array) độ dài được xây dựng trên bảng chữ cái gồm ký tự. Nhiệm vụ của bạn là đếm xem có bao nhiêu xâu tạo ra đúng mảng hậu tố này.
Gọi là một xâu độ dài mà mỗi ký tự là một số nguyên trong tập (ta so sánh các ký tự theo giá trị số). Hậu tố thứ của là xâu con (chỉ số tính từ ). Mảng hậu tố của là dãy gồm chỉ số bắt đầu của tất cả các hậu tố, sau khi các hậu tố được sắp xếp theo thứ tự từ điển tăng dần.
Ví dụ, mảng hậu tố của xâu oolimry là , vì danh sách các hậu tố sau khi sắp xếp là .
Cho trước mảng hậu tố và kích thước bảng chữ cái , hãy đếm số xâu độ dài trên bảng chữ cái ký tự tạo ra đúng mảng hậu tố đó. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho .
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : độ dài mảng hậu tố và kích thước bảng chữ cái.
- Dòng thứ hai chứa số nguyên mô tả mảng hậu tố. Đảm bảo các đôi một khác nhau (là một hoán vị của ).
Dữ liệu ra
- Một số nguyên duy nhất: số xâu tạo ra mảng hậu tố đã cho, lấy theo modulo .
Ràng buộc
- , các đôi một khác nhau.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 2 0 2 1 |
1 | Chỉ có duy nhất xâu abb (tức dãy 1 2 2) tạo ra mảng hậu tố này. |
| 5 1 0 1 2 3 4 |
0 | Bảng chữ cái chỉ có ký tự nên mọi ký tự phải bằng nhau, không xâu nào cho ra mảng hậu tố này. |
| 7 6 3 2 4 1 0 5 6 |
36 | Có xâu thỏa mãn, một trong số đó là ddbacef. |
Bình luận