前缀 MEX 序列
时间限制:2s
空间限制:1024MB
题目描述
对于一个有限非负整数序列 X,定义 mex(X) 为没有在 X 中出现的最小非负整数。例如 mex(0,0,1,3)=2,空序列的 MEX 为 0。
给定一个长度为 N 的 01 序列 S=(S1,S2,…,SN)。求有多少个长度为 N 的整数序列 A=(A1,A2,…,AN) 满足 0≤Ai≤M,且对每个 i:
- 若 Si=1,则 Ai=mex(A1,A2,…,Ai−1);
- 若 Si=0,则 Ai=mex(A1,A2,…,Ai−1)。
答案对 998244353 取模。
输入格式
第一行两个整数 N,M。
第二行 N 个整数 S1,S2,…,SN。
输出格式
输出答案对 998244353 取模后的结果。
样例输入 1
4 2
1 0 0 1
样例输出 1
4
样例输入 2
10 1000000000
0 0 1 0 0 0 1 0 1 0
样例输出 2
587954969
数据范围
- 1≤N≤5000;
- 0≤M≤109;
- Si∈{0,1}。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
8 |
N≤7 且 M≤5 |
| 2 |
16 |
N≤40 且 M≤15 |
| 3 |
12 |
对所有 i 都有 Si=0 |
| 4 |
36 |
M≥N−1 |
| 5 |
28 |
无特殊限制 |