题目大意,有一个n*n的网格,每行每列放恰好1个3,要么放恰好1个1和1个2,并且至少m行放了一个3.求方案数。
题解,考虑将至少这个问题转化,对于t>=m, 求恰好t行放了3的方案数。这等价于先从n行中选出t行来,然后再选出t列做排列。
然后相当于剩下n-t行/列。然后剩下的问题就是对于n*n的格子里只放1和2的方案数。
这等价于把1放到对角线上的方案数,乘上它等价的倍数。
前者就是一个错位排列D(n)。后者等价于对这些列做排列。
因此有Answer(n, m)=C(n, t)*P(n, t)*D(n-t)*P(n-t,n-t)。其中m<=t<=n。
注意到P(n, t)*P(n-t, n-t)=P(n, n),因此最终答案Answer(n, m)=P(n, n)*C(n, t)*D(n-t), m<=t<=n。
其中D(x)=(x-1)(D(x-1)+D(x-2))。