CF1916H Matrix Rank 题解
直接推式子失败了,于是考虑dp。
设 $i$ 行 $n$ 列的 $j$ 阶矩阵的方案数为 $f_{i,j}$,则考虑新增一行,总共有 $p^n$ 种方案,由于秩为 $j$,根据线性相关的定义,有 $p^j$ 种方案不会增加秩,所以写出转移方程:
$$
f_{i,j}=f_{i-1,j}p^j+f_{i-1,j-1}(p^n-p^{j-1})
$$
答案就是 $f_{i,0\sim k}$ 这种相邻位置转移的dp可以看作路径带权方案数问题,分析发现, 对于秩为 $r$ 的答案,$\prod_{i=0}^{n-1}(p^n-p^i)$ 是一定要有的。
然后剩下的位置就是平着走,假设在 $j$ 列走了 $c_j$ 格,则要求 $\sum_{i=0}^nc_i=n-r$,且一旦确定了 $c$,就确定了整个方案。这样我们就可以直接对 $c$ 计数。
这个问题很典型,设第 $i$ 列的生成函数为 $G_i(x)$,得到 $G_i(x)=1+p^ix+p^{2i}x^2+\cdots=\frac1{1-p^ix}$。
于是答案为:
$$
\prod_{i=0}^{n-1}(p^n-p^i)[x^{n-r}]\prod_{i=0}^n\frac1{1-p^ix}。
$$
现在考虑怎么求出最后的生成函数的通项。考虑:
$$
G_i(x)=\prod_i\frac1{1-p^ix},G(px)=\prod_{i}\frac1{1-p^{i+1}x}
$$
做商得:
$$
(1-x)G_i(x)=(1-p^{i+1})G_i(px)
$$
提取第 $s$ 项系数得到:
$$
g_{i,s}-g_{i,s-1}=p^sg_{i,s}-p^{i+1}p^{s-1}g_{i,s-1}
$$
于是得到递推式:
$$
g_{i,s}=\frac{p^{i+s}-1}{p^s-1}g_{i,s-1}
$$
进而得到通向:
$$
g_{i,s}=\prod_{i=1}^r\frac{p^{i+j}-1}{p^j-1}
$$
于是答案为:
$$
\prod_{i=0}^{n-1}(p^n-p^i)\prod_{i=1}^{n-r}\frac{p^{i+j}-1}{p^j-1}
$$
从小到大枚举 $r$,考虑分子分母互相抵消即可。

浙公网安备 33010602011771号