连通块数之和
时间限制:2s
空间限制:1024MB
题目描述
对一个长度为 N 的序列 A=(A1,A2,…,AN),定义 f(A) 如下:先建立一个有 N 个顶点且没有边的无向图,顶点编号为 1 到 N;对所有满足 1≤i<j≤N 的整数对 (i,j),若 Ai≤Aj,就在顶点 i 与顶点 j 之间连边。令最终图中的连通块数为 f(A)。
给定长度为 N 的序列 B=(B1,B2,…,BN),其中每个元素为 −1 或 1 到 M 之间的整数。将所有 −1 分别替换为 1 到 M 之间的整数,得到序列 B′。若 B 中有 q 个 −1,则一共有 Mq 种可能的 B′。
求所有可能的 B′ 的 f(B′) 之和,对 998244353 取模。
输入格式
第一行两个整数 N,M。
第二行 N 个整数 B1,B2,…,BN。
输出格式
输出答案对 998244353 取模的结果。
样例输入 1
3 3
2 -1 1
样例输出 1
6
样例输入 2
10 8
-1 7 -1 -1 -1 2 -1 1 -1 2
样例输出 2
329785
样例输入 3
11 12
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
样例输出 3
529513150
数据范围
- 2≤N≤2000;
- 1≤M≤2000;
- Bi=−1 或 1≤Bi≤M。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
8 |
N≤8 且 M≤4 |
| 2 |
12 |
B 中没有 −1 |
| 3 |
16 |
对所有 i 都有 Bi=−1 |
| 4 |
36 |
N≤200 且 M≤200 |
| 5 |
28 |
无特殊限制 |