luogu#P7444. 「EZEC-7」猜排列

    ID: 11446 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划dp2021洛谷原创O2优化动态规划优化前缀和逆元洛谷月赛

「EZEC-7」猜排列

题目背景

Update:数据已经经过加强。

题目描述

Alice 手上有一个长度为 nn 的排列 aa,排列中的数为 0,1,2,,n10,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 个数代表着满足 1lrn1 \leq l \leq r \leq nf(l,r)=i1f(l,r)=i-1 的二元组 (l,r)(l,r) 的个数。

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

输入格式

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

第二行,nn 个非负整数,第 ii 个数 cic_i 代表着满足 lrl \leq r f(l,r)=i1f(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):n8n\leq 8
  • Subtask 2(8 points):n20n\leq 20
  • Subtask 3(16 points):n100n\leq 100
  • Subtask 4(32 points):n2×103n\leq 2\times 10^3
  • Subtask 5(20 points):n105n\leq 10^5
  • Subtask 6(20 points):无特殊限制。

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