CF1093F Vasya and Array

题目描述

Vasya 有一个由 $n$ 个整数构成的数组,以及两个整数 $k$ 和 $len$。数组中的所有数字要么在 $1$ 到 $k$(包含 $k$)之间,要么等于 $-1$。如果数组中不存在长度为 $len$ 的连续相同数字的区间,则称该数组是好的。 Vasya 将把每个 $-1$ 替换为 $1$ 到 $k$(包含 $k$)之间的某个数字,使得最终得到的数组是好的。请你告诉他有多少种替换方式。由于答案可能很大,请输出对 $998244353$ 取模后的结果。

输入格式

第一行包含三个整数 $n, k, len$($1 \le n \le 10^5, 1 \le k \le 100, 1 \le len \le n$)。 第二行包含 $n$ 个数字,表示该数组。每个数字要么是 $-1$,要么在 $1$ 到 $k$ 之间(包含 $k$)。

输出格式

输出一个整数,表示有多少种方式将每个 $-1$ 替换为 $1$ 到 $k$ 之间的某个数字,使得数组是好的。答案对 $998244353$ 取模。

说明/提示

第一个测试点的可能答案: 1. $[1, 2, 1, 1, 2]$; 2. $[1, 2, 1, 2, 2]$。 第二个测试点没有合法方案,因为前两个元素相同。 第三个测试点的答案太多,这里不再一一列举。 由 ChatGPT 4.1 翻译