trang chủ / bài tập / palinless

Mảng không palindrome

Đề bài

Mô tả

Một mảng b được gọi là xấu nếu nó chứa một dãy con liên tiếp bl,bl+1,,br có độ dài lẻ lớn hơn 1 (tức là l<rrl+1 là số lẻ) sao cho với mọi i{0,1,,rl} ta có bl+i=bri.

Nói cách khác, b là xấu nếu nó chứa một dãy con liên tiếp độ dài lẻ 3 là một palindrome. Nếu mảng không xấu thì gọi là tốt.

Cho mảng a1,a2,,an trong đó một số phần tử đã bị thay bởi 1. Hãy đếm số mảng tốt có thể nhận được bằng cách thay mỗi 1 bởi một số nguyên trong đoạn [1,k].

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òng thứ hai chứa n số nguyên a1,a2,,an — mỗi ai bằng 1 hoặc nằm trong đoạn [1,k].

Dữ liệu ra

  • In ra một số nguyên duy nhất là số mảng tốt thu được, lấy theo modulo 998244353.

Ràng buộc

  • 2n,k2·105.
  • Mỗi ai bằng 1 hoặc nằm trong [1,k].

Ví dụ

Input Output Giải thích
2 3
-1 -1
9 Mảng dài 2 không thể chứa dãy con palindrome lẻ dài 3, nên tất cả 3×3=9 cách điền đều cho mảng tốt.
5 2
1 -1 -1 1 2
0 Vị trí 14 đều bằng 1. Bất kỳ giá trị nào điền vào vị trí 2,3 cũng tạo ra palindrome độ dài 3 ở vị trí {1,2,3} hoặc {3,4,5}.
5 3
1 -1 -1 1 2
2 Chỉ có hai mảng tốt: [1,2,3,1,2][1,3,2,1,2].
4 200000
-1 -1 12345 -1
735945883 Đáp số lấy theo modulo.

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