题解:P3158 [CQOI2011] 放棋子

· · 题解

\textbf{Description}

在一个 n 行 m 列的棋盘中放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能再同一行或同一列,求方案总数。

\textbf{Solution}

设 a_k 表示颜色为 k 的棋子的数量。

令 f_{i,j,k} 表示使用前 k 种颜色的棋子,填入任意 i 行 j​ 列的方案数。

令 g_{i,j,k} 表示用任意 k 个同色棋子,填入任意 i 行 j 列的方案数。

$$ g_{i,j,k}= {i\cdot j\choose k}- \sum\limits_{l=1}^{i}\sum\limits_{r=1}^{j}{i\choose l}{j\choose r}g_{l,r,k} $$ 预处理 $g$ 完成后,就可以转移 $f$: $$ f_{i,j,k}= \sum\limits_{l=0}^{i-1}\sum\limits_{r=0}^{j-1} {n-l\choose i-l}{m-r\choose j-r} f_{l,r,k-1}\cdot g_{i-l,j-r,a_k} $$ 答案即为 $$ \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}f_{i,j,c} $$ ### $\textbf{Code}