#P7444. 「EZEC-7」猜排列

    ID: 8268 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>动态规划 DP2021洛谷原创O2优化动态规划优化前缀和逆元洛谷月赛

「EZEC-7」猜排列

背景

Update:数据已经经过加强。

题目描述

Alice 手上有一个长度为 nn 的排列 aa,排列中的数为 0,1,2,⋯ ,n−10,1,2,\cdots,n-1。

Bob 闲来无事,想去猜它。但 Alice 不想让他轻易猜到。

于是他抛给了 Bob 一些条件,让他来猜这个排列。

我们定义 f(l,r)=mex{al,al+1,⋯ ,ar}f(l,r)=\text{mex}\{a_l,a_{l+1},\cdots,a_r\},其中 mex\text{mex} 函数代表一个可重集中没有出现过的最小非负整数。

而 Alice 说出的条件包含 nn 个数,第 ii 个数代表着满足 1≤l≤r≤n1 \leq l \leq r \leq n 且 f(l,r)=i−1f(l,r)=i-1 的二元组 (l,r)(l,r) 的个数。

Bob 一下就知道这并不能确认整个排列了,因此他想知道符合已有条件的排列数量。

输入格式

第一行,一个正整数 nn,代表 Alice 手中排列的长度。

第二行,nn 个非负整数,第 ii 个数 cic_i 代表着满足 l≤rl \leq r 且 f(l,r)=i−1f(l,r)=i-1 的二元组 (l,r)(l,r) 的个数。

输出格式

输出符合已有条件的排列数量对 998244353998244353 取模的值。

4
4 3 1 1
2
4
4 0 3 2
0

提示

【样例解释】

第一个样例中存在两个满足条件的排列,分别为:

{1,0,2,3}\{1,0,2,3\} 和 {3,2,0,1}\{3,2,0,1\} 。

第二个样例可以通过枚举发现没有符合题意的解。

【数据范围】

本题采用捆绑测试。

  • Subtask 1(4 points):n≤8n\leq 8。
  • Subtask 2(8 points):n≤20n\leq 20。
  • Subtask 3(16 points):n≤100n\leq 100。
  • Subtask 4(32 points):n≤2×103n\leq 2\times 10^3。
  • Subtask 5(20 points):n≤105n\leq 10^5。
  • Subtask 6(20 points):无特殊限制。

对于 100%100\% 的数据,1≤n≤5×1051\le n\le5\times10^5 ,ci≥0c_i \ge 0,保证 ∑i=1nci=n(n+1)2−1\sum^{n}_{i=1}c_i=\frac{n(n+1)}{2}-1。