Loading

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$,考虑分子分母互相抵消即可。
posted @ 2025-07-09 20:57  lupengheyyds  阅读(12)  评论(0)    收藏  举报