链接 想使所有格子全被覆盖,要么所有行都有棋子,要么所有列都有棋子。 假设现在是所有行都有棋子,那么其中k对棋子互相攻击就可以看成n-k列放n个棋子。那么答案就为2*C(n,n-k)*把n个物品放n-k个集合的方案数。 最后一项为第二类斯特林数,记S{n,k}为n个物品放k个集合的方案数 公式:S{n,k}=sigma{C(k,i)*(k-i)^n (-1)^i} 0<=i<=k 递推公式:S{n,k}=S{n-1,k-1}+kS{n-1,k} #include<bits/stdc++.h> #define ls rt<<1 #define rs ...