5007.队列和栈

时间限制:1s 内存限制:512MB

小 $\mathcal{L}$ 有一个栈和一个队列,现在队列中有 $n$ 个不同元素,每次可以选择两种操作:

  1. 把队头的元素放到栈顶(如果队列为空则不能进行该操作)
  2. 把栈顶元素放入输出数组(如果栈为空则不能进行该操作)

现在总共要进行 $2n$ 次操作,故输出数组长度必然为 $n$。

小 $\mathcal{L}$ 有强迫症,所以输出数组的第一个位置的元素有必须是自己喜欢的。

现在给出队列($a_1\sim a_n$ 其中 $a_1$ 为队头)中的元素的属性($a_i$ 为 $1$ 则表示该元素小 $\mathcal{L}$ 喜欢,为 $0$ 则不喜欢),您需要求出符合小 $\mathcal{L}$ 要求的不同的输出数组的个数,因为结果很大,所以您只需要给出结果 $\bmod 998244353$ 后的结果即可。

输入格式(从终端/标准输入读取)

第一行一个整数表示小 $\mathcal{L}$ 给出的队列中的元素的个数。

接下来一行 $n$ 个由空格隔开的整数表示小 $\mathcal{L}$ 是否喜欢这个元素。

输出格式(输出至终端/标准输出)

一行一个整数表示满足要求的输出数组的个数,因为结果很大,所以您只需要给出结果 $\bmod 998244353$ 后的结果即可。

输入样例1

复制
5
1 1 1 1 1
 \n
 · · · · \n

输出样例1

复制
42
  \n

输入样例2

复制
5
1 0 1 0 1
 \n
 · · · · \n

输出样例2

复制
24
  \n

说明

对于 $100\%$ 的数据 $n\leq1\times 10^6$,$a_i\in\begin{Bmatrix}0,1\end{Bmatrix}$。

提交题解

Please login first.

© 2025 FAQs