AT_arc186_b [ARC186B] Typical Permutation Descriptor

题目描述

给定一个长度为 $N$ 的整数序列 $(A_1,\dots,A_N)$。该整数序列满足对于每个 $i=1,\dots,N$,都有 $0\leq A_i < i$。请计算满足以下条件的 $(1,\dots,N)$ 的排列 $(P_1,\dots,P_N)$ 的个数,并对 $998244353$ 取模。 - 对于每个 $i=1,\dots,N$, - 对于所有满足 $A_i < j < i$ 的整数 $j$,都有 $P_j > P_i$。 - 如果 $A_i > 0$,则 $P_{A_i} < P_i$。 保证对于输入给定的 $(A_1,\dots,A_N)$,一定存在满足条件的排列。

输入格式

输入以以下格式从标准输入给出。 > $N$ $A_1$ $A_2$ $\dots$ $A_N$

输出格式

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

说明/提示

## 限制条件 - $1\leq N\leq 3\times 10^5$ - $0\leq A_i < i$ - 对于 $A_1,\dots,A_N$,保证存在满足题目条件的排列 - 输入均为整数 ## 样例解释 1 满足条件的排列有 $(2,\ 3,\ 1,\ 4),\ (2,\ 4,\ 1,\ 3),\ (3,\ 4,\ 1,\ 2)$ 共 $3$ 个。 ## 样例解释 2 $2350309500$ 对 $998244353$ 取模的结果为 $353820794$,即为答案。 由 ChatGPT 4.1 翻译