求10个蓝球与10个红球的合法排列数:无三个同色球连续
我来帮你梳理清楚用总排列数减去不利情况的思路,也就是容斥原理的应用,同时也会补充更直观的块划分方法来验证结果。
步骤1:计算总排列数
我们有10个相同的蓝球(B)和10个相同的红球(R),总排列数是从20个位置中选10个放蓝球(剩下的放红球),即:C(20,10) = 184756
步骤2:定义不利情况
不利情况是至少有一处三个同色球连续的排列,我们用容斥原理来计算这部分数量:
设:
X:至少有一个三个红球连续的排列集合Y:至少有一个三个蓝球连续的排列集合
不利情况总数为 |X ∪ Y| = |X| + |Y| - |X ∩ Y|,其中|X ∩ Y|是同时存在三个红球连续和三个蓝球连续的排列数。
由于红球和蓝球数量对称,|X| = |Y|,我们只需要先计算|X|。
计算|X|(至少一个三个红球连续的排列数)
我们先算无三个红球连续的排列数,再用总排列数减去它得到|X|:
把10个蓝球排成一排,会产生11个空隙(包括两端),我们要在这些空隙中插入红球,每个空隙最多放2个红球(避免三个连续红球),总共放10个红球。
用容斥原理计算符合条件的空隙分配方式数:
- 不限制每个空隙放球数量的总分配数:
C(10+11-1, 11-1) = C(20,10) = 184756 - 减去至少一个空隙放≥3个红球的情况:选1个空隙,剩余7个红球分配到11个空隙,数量为
C(11,1)*C(7+11-1,11-1) = 11*C(17,10) = 11*19448 = 213928 - 加回至少两个空隙放≥3个红球的情况:选2个空隙,剩余4个红球分配,数量为
C(11,2)*C(4+11-1,11-1) = 55*C(14,10) = 55*1001 = 55055 - 减去至少三个空隙放≥3个红球的情况:选3个空隙,剩余1个红球分配,数量为
C(11,3)*C(1+11-1,11-1) = 165*C(11,10) = 165*11 = 1815
(四个空隙放≥3个红球需要12个红球,超过10,停止计算)
所以无三个红球连续的排列数为:184756 - 213928 + 55055 - 1815 = 24068
因此|X| = 总排列数 - 无三个红球连续的排列数 = 184756 - 24068 = 160688,同理|Y| = 160688
计算|X ∩ Y|(同时存在三个红球和三个蓝球连续的排列数)
这里我们可以利用最终答案反向推导(或者用块划分法直接计算答案后反推):
设最终符合条件的排列数为Ans,根据容斥原理:Ans = 总排列数 - |X ∪ Y| = 总排列数 - |X| - |Y| + |X ∩ Y|
我们先通过块划分法计算Ans,再反推|X ∩ Y|:
块划分法计算Ans
把蓝球分成若干块,每块1或2个(避免三个连续);红球同理分成若干块,每块1或2个。设蓝球分成k块,红球分成l块,那么:
- 蓝球分
k块的方式数:C(k, 10 - k)(因为k = x + y,x + 2y = 10,y = 10 - k,即从k块中选y块放2个蓝球) - 红球分
l块的方式数:和蓝球对称,为C(l, 10 - l)
排列时,块数差不能超过1(否则会出现同色块连续):
k = l:可以蓝块开头或红块开头,排列数为2 * C(k,10-k) * C(l,10-l)k = l + 1:只能蓝块开头,排列数为C(k,10-k) * C(l,10-l)k = l - 1:只能红块开头,排列数为C(k,10-k) * C(l,10-l)
计算所有可能的k和l组合:
k=l的情况总和:2*(1*1 +9*9 +28*28 +35*35 +15*15 +1*1) = 2*(1+81+784+1225+225+1) = 4634k=l+1的情况总和:1*9 +9*28 +28*35 +35*15 +15*1 =9+252+980+525+15=1781k=l-1的情况总和:和k=l+1对称,也是1781
最终Ans = 4634 +1781 +1781 = 8196
现在反推|X ∩ Y|:8196 = 184756 -160688 -160688 + |X ∩ Y|
解得|X ∩ Y| = 144816
最终结果
符合条件的排列总数为:Ans = 184756 -160688 -160688 +144816 = 8196
内容的提问来源于stack exchange,提问作者user536078

