#4863. 矩阵

题目描述

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

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

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

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

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

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

数据范围

1 ≤ N ≤ 8000 1 \leq N \leq 8000 1N8000, 1 ≤ M ≤ 200 1 \leq M \leq 200 1M200

题解

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值