AT_arc132_c [ARC132C] Almost Sorted

题目描述

给定一个由 $1,\dots,n$ 和 $-1$ 组成的数列 $a_1,\dots,a_n$,以及一个整数 $d$。请问有多少个满足以下条件的数列 $p_1,\dots,p_n$?请输出答案对 $998244353$ 取模后的结果。 - $p_1,\dots,p_n$ 是 $1,\dots,n$ 的一个排列。 - 对于 $i=1,\dots,n$,如果 $a_i\neq -1$,则 $a_i=p_i$(也就是说,可以通过将 $a_1,\dots,a_n$ 中的 $-1$ 项适当替换,得到 $p_1,\dots,p_n$)。 - 对于 $i=1,\dots,n$,有 $|p_i-i|\le d$。

输入格式

输入通过标准输入按以下格式给出。 > $n$ $d$ $a_1$ $a_2$ $\dots$ $a_n$

输出格式

请输出满足条件的数列个数对 $998244353$ 取模后的结果。

说明/提示

## 限制条件 - $1 \le d \le 5$ - $d < n \le 500$ - $1 \le a_i \le n$ 或 $a_i = -1$ - 如果 $a_i \neq -1$,则 $|a_i-i| \le d$ - 如果 $i \neq j$ 且 $a_i, a_j \neq -1$,则 $a_i \neq a_j$ - 所有输入均为整数 ## 样例解释 1 $(3,2,1,4)$ 和 $(3,4,1,2)$ 满足条件。 ## 样例解释 2 将 $-1$ 替换后能得到的 $1,2,3,4,5$ 的排列只有 $(2,3,4,5,1)$。但该排列的第 $5$ 项不满足条件,因此答案为 $0$。 ## 样例解释 3 请输出答案对 $998244353$ 取模后的结果。 由 ChatGPT 4.1 翻译