一道有趣的题

发布于:2022-10-29 ⋅ 阅读:(425) ⋅ 点赞:(0)

题目如下:

红黄蓝三种颜色的糖各n块,排成一行,要求相邻两块糖颜色不同,求方案数。
—— From zhengrui

  • 1<=n <= 1e6
  • 一眼就是组合数题
  • 考虑红球被分成k段,那么需要用黄球插入k - 1个隔板,那么方案数为 C k − 1 n − 1 C_{k -1}^{n - 1} Ck1n1,那么同理 : 黄球被分成t段的方案数为 C t − 1 n − 1 C_{t - 1}^{n - 1} Ct1n1,然后考虑几种情况:
  1. k段两端均为黄球

  2. 一端为黄球,一段为红球,注意 : 这会有两种情况

  3. 两段均为红球

  • 最终式子为 C k − 1 n − 1 ∗ C t − 1 n − 1 ∗ ( 1 + ( t = = k ) ) C_{k -1}^{n - 1} * C_{t- 1}^{n - 1} *(1 + (t == k)) Ck1n1Ct1n1(1+(t==k))

  • 考虑蓝球的情况 :总共有 2 n − 1 2n - 1 2n1块隔板,其中两侧不同的隔板有 k + t + 1 k + t + 1 k+t+1个(开头结尾也要算),那么相同的情况为 2 n − 1 − ( k + t − 1 ) 2n - 1 - (k + t - 1) 2n1(k+t1) 2 n − k − t 2n - k - t 2nkt种,相同肯定要放没有选择,能用的球仅剩 n − ( 2 n − k − t ) n - (2n - k - t) n(2nkt)个,即 k + t − n k +t - n k+tn个,方案为 C k + t − n k + t + 1 C_{k + t - n}^{k + t + 1} Ck+tnk+t+1,简化一下 C k + t + 1 n + 1 C_{k + t + 1}^{n + 1} Ck+t+1n+1;

  • 总的式子为 C n − 1 k − 1 ∗ C n − 1 t − 1 ∗ ( 1 + ( t = = k ) ) ∗ C k + t + 1 n + 1 C_{n - 1}^{k - 1} * C_{n - 1}^{t - 1}*(1 +(t == k))*C_{k + t + 1}^{n + 1} Cn1k1Cn1t1(1+(t==k))Ck+t+1n+1,值得注意的是 C n m C_{n}^{m} Cnm n < m , m < 0 n < m,m < 0 n<m,m<0时为0。

思路懂了,代码应该有手就行吧。


网站公告

今日签到

点亮在社区的每一天
去签到