#ARC187B. 连通块数之和

连通块数之和

连通块数之和

时间限制:2s
空间限制:1024MB

题目描述

对一个长度为 NN 的序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N),定义 f(A)f(A) 如下:先建立一个有 NN 个顶点且没有边的无向图,顶点编号为 11 到 NN;对所有满足 1≤i<j≤N1\le i<j\le N 的整数对 (i,j)(i,j),若 Ai≤AjA_i\le A_j,就在顶点 ii 与顶点 jj 之间连边。令最终图中的连通块数为 f(A)f(A)。

给定长度为 NN 的序列 B=(B1,B2,…,BN)B=(B_1,B_2,\ldots,B_N),其中每个元素为 −1-1 或 11 到 MM 之间的整数。将所有 −1-1 分别替换为 11 到 MM 之间的整数,得到序列 B′B'。若 BB 中有 qq 个 −1-1,则一共有 MqM^q 种可能的 B′B'。

求所有可能的 B′B' 的 f(B′)f(B') 之和,对 998244353998244353 取模。

输入格式

第一行两个整数 N,MN,M。

第二行 NN 个整数 B1,B2,…,BNB_1,B_2,\ldots,B_N。

输出格式

输出答案对 998244353998244353 取模的结果。

样例输入 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≤20002\le N\le2000;
  • 1≤M≤20001\le M\le2000;
  • Bi=−1B_i=-1 或 1≤Bi≤M1\le B_i\le M。
子任务编号 分值 特殊限制
1 8 N≤8N\le8 且 M≤4M\le4
2 12 BB 中没有 −1-1
3 16 对所有 ii 都有 Bi=−1B_i=-1
4 36 N≤200N\le200 且 M≤200M\le200
5 28 无特殊限制