n个人排成一排,选k个人,使他们两两不相邻,求方案数。
1⩽x1⩽x2−2⩽x3−4⋯⩽xk−2(k−1)⩽n−2(k−1)
考虑转化为
1⩽y1⩽y2−1⩽y3−2⋯⩽yk−(k−1)
显然
yi=xi−(i−1)
xk−2(k−1)⩽n−2(k−1)
yk+(k−1)−2(k−1)⩽n−2(k−1)
1⩽y1⩽y2−1⩽y3−2⋯⩽yk−(k−1)⩽n−2(k+1)
$1\leqslant y_1<y_2<y_3 \dots < y_k\leqslant n-k+1 $
$ ans = C_{n-k+1}^{k}$

根据球是否本质 相同(0 否,1 是),盒子是否本质 相同(0 否,1 是 ),是否必须将盒子填满(0 不需要,1 必须),共 8 种情况,显然,每种情况恰好对应一个 01 三元组 (x,y,z),下文会用类似的三元组来表示问题描述。
下文中,我们默认有 n 个球,m 个盒子,0<m≤n,n,m 均为整数。
八重计数法求法
Part1
-
(0,0,0),即球本质不同,盒子本质不同,不必填满。
对于每一种球考虑,显然每一个球可以放在任意一个盒子中,有 m 种方案,根据乘法原理,答案为 mn。
-
(0,0,1),与上一问的区别仅在于 盒子必须填满。
一个错误想法:先任选 m 个球,把他们填到盒子中,转化成问题 (0,0,0),但这样是错的,因为球本质不同,盒子也本质不同。
先补集转化,可以求至少一个盒子不满的方案数,再容斥,至少一个盒子不满的方案数即为 k=1∑m(−1)k+1(km)(m−k)n,再用总方案数 mn 减掉即可,总式子可以写作k=0∑m(−1)k(km)(m−k)n。
当然,也可以写成二项式反演形式,也是容易证明的。
-
(0,1,1),与上一问的区别仅在于 盒子本质相同。
那么记上一问答案为 s,这一问答案就是 m!s,即 $ \dfrac{1}{m!}\sum\limits_{k=0}m(-1){k}\tbinom{m}{k}(m-k)^n$。
上式也就是著名的第二类斯特林数,记做 S(n,m)。
S(n,m)=S(n−1,m−1)+mS(n−1,m)
第 $ m$ 个放入第 n 个新盒子 第 m 个放入非空的盒子
10个不同的球,放3个不同大盒子(不允许空)
10=1+1+8=1+2+7=1+3+6=1+4+5=2+2+6=2+3+5=2+4+4=3+3+4
ans=2!C101∗C91+C101∗C92+…
-
(0,1,0),与上一问的区别仅在于 盒子不必填满。
那么枚举几个盒子不满(假设 k 个),就转化成了上一问,因为盒子本质相同,所以系数是 1,而不是组合数,这一问答案即为 k=0∑m−1S(n,m−k)。
Part2
-
(1,0,0),即球本质相同,盒子本质不同,不必填满。
经典插板法,加 m 个球,现在共有 n+m−1 空格,随意挑取 m−1 个球作为板子,那么每一种挑选方案都对应一种球放入盒中的方案,故方案数为 (m−1n+m−1)。
-
(1,0,1),与上一问的区别仅在于 盒子必须填满。
与上一问类似,仍然插板,但这次是插 n−1 个板子,在其中选 m−1 个(这样才保证非空),故方案数 (m−1n−1)。
Part3
-
(1,1,0),即球本质相同,盒子本质相同,不必填满。
只会使用 dp 来解决,可以设 dp(i,j) 为目前使用了 i 个球,填了(可以不满)j 个盒子的方案数,那么有转移方程 dp(i,j)=dp(i,j−1)+dp(i−j,j) (分类讨论 j 个盒子中是否有空盒子)。
-
(1,1,1),与上一问的区别仅在于 盒子必须填满。
那么我们先每个盒子里都放一个球,答案就是 dp(n−m,m)(dp 是上一问求出的数组)。
整数无序分拆
至此,8 情况全部讨论完。
参考资料: