Đế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 n được xây dựng trên bảng chữ cái gồm k 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 s là một xâu độ dài n mà mỗi ký tự là một số nguyên trong tập {1,2,,k} (ta so sánh các ký tự theo giá trị số). Hậu tố thứ i của s là xâu con s[in1] (chỉ số tính từ 0). Mảng hậu tố của s là dãy s0,s1,,sn1 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à [3,2,4,1,0,5,6], vì danh sách các hậu tố sau khi sắp xếp là [imry,limry,mry,olimry,oolimry,ry,y].

Cho trước mảng hậu tố và kích thước bảng chữ cái k, hãy đếm số xâu độ dài n trên bảng chữ cái k 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 998244353.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: độ dài mảng hậu tố và kích thước bảng chữ cái.
  • Dòng thứ hai chứa n số nguyên s0,s1,,sn1 mô tả mảng hậu tố. Đảm bảo các si đôi một khác nhau (là một hoán vị của 0,1,,n1).

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 998244353.

Ràng buộc

  • 1n200000
  • 1k200000
  • 0sin1, các si đô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ó 1 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 36 xâu thỏa mãn, một trong số đó là ddbacef.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0