#4863. 矩阵

#### 题目描述

有一个 $N$ 行 $M$ 列的矩阵,你可以选择一些位置涂黑,其它位置涂白。

对一个矩阵,我们计算出一个长度为 $N$ 的序列 $A$ ,以及两个长度为 $M$ 的序列 $B$ 和 $C$ :

令 $A_i$ 为第 $i$ 行第一次出现黑色的位置的列号,如果第 $i$ 行全白,则为 $M+1$ ;

令 $B_i$ 为第 $i$ 列第一次出现黑色的位置的行号,如果第 $i$ 列全白,则为 $N+1$ ;

令 $C_i$ 为第 $i$ 列最后一次出现黑色的位置的行号,如果第 $i$ 列全白,则为 $0$ ;

请你计算,有多少种不同的 $\{A,B,C\}$ 三元组可能得到,输出答案对 $998244353$ 取模后的结果。

#### 数据范围

$1 \leq N \leq 8000$,$1 \leq M \leq 200$ 。

#### 题解

为什么有个 $m \le 3$ 的部分分。。算了我本来就菜。

假设我们一开始每个格子都任意染色,那我们考虑什么时候两个染色方案的这三个数组相同。发现当存在一个点,它的左、上、下同时存在黑色格子的话,那这个点去掉后数组不会改变。所以根据这个我们可以进行 $\text{dp}$ : $f[i][j]$ 表示前 $j$ 列有 $i$ 行有黑色点的方案数,考虑转移到 $f[i+k][j+1]$ 。当 $k=0$ 的时候,就只能加入 $0 \sim 2$ 个点,转移显然。当 $k>0$ 的时候,考虑那 $i+k$ 个当中第一个是新插入的在第 $x$ 个,最后一个新插入的从后往前是第 $y$ 个,而第 $x$ 之前和 $y$ 之后分别最多能够重合一个点,所以它的转移系数应当是 $\sum_{x=1}^{i+1}\sum_{y=1}^{i-x+2}C_{i+k-x-y}^{k-2} \times x \times y$ ,用组合数的性质可以推到这个系数为 $C_{i+k+2}^{k+2}$ 。然后发现这个转移是卷积的形式,所以用 $\text{Ntt}$ 优化即可。效率: $O(nm\log n)$ 。

posted @ 2020-06-09 19:11  xjqxjq  阅读(145)  评论(0编辑  收藏  举报