【专题盘点1】组合数

首先,本蒟蒻先坦明,本篇文章不为提高组 以上的选手服务(因为我太弱了)。

一些重要的公式/算法

①入门:

(1)基本运算律

即,像 a + b = b + a a+b=b+a a ( b + c ) = a b + a c a(b+c)=ab+ac a n a^n × × b n b^n = = ( a b ) n (ab)^n 这样的文化课学的恒等式,这是编程中做数学题的基础。大家无论是普及组选手还是提高组选手,务必要记牢在学校学的所有数学芝士,千万不能因此出现关键时刻粗心出错导致十年OI一场空的情况。

(2)快速幂

如果不会,请进这道题: Luogu1226


②基础:
(1)杨辉三角形

(2)组合数的定义与组合数的公式

※组合,即排列组合,为不考虑顺序的组合。本蒟蒻编个情景来解释 C n k C_n^k 的意义:存在 n n 个不同的不同的小球,选其中 k k 个小球放到篮子里的方案数。

※一些公式
这里仅列下几个,毕竟本蒟蒻一时间想不全。

C n k = ( n ! ) / ( ( n k ) ! k ! ) C_n^k=(n!)/((n-k)!k!)
C ( n , k ) = C ( n 1 , k 1 ) , C ( n 1 , k ) C(n,k)=C(n-1,k-1),C(n-1,k)
Σ ( i = 0 , n ) C ( n , i ) = 2 n Σ(i=0,n) C(n,i)=2^n
④卢卡斯定理 (偷懒一下不写了)

注意关键在于组合数的运用,而不是背公式。

(3)组合数取模(阶乘逆元)

由于有的时候 C n k C_n^k 的值可能过大,所以题面往往会让你将答案对某个数取模;但是涉及到除法不能取模,那么我们就需要逆元。其简要推导过程如下:

C n k C_n^k
= ( n ! ) / ( ( n k ) ! k ! ) =(n!)/((n-k)!k!)
= ( n ! ) × i n v ( ( ( n k ) ! k ! ) ) =(n!)×inv(((n-k)!k!))

通常一道要用到组合数的题目中,需要多次使用组合数;那么我们为了O(1)时间内求 C n k C_n^k ,就需要预处理出 i n v ( i ! ) inv(i!) 的值。这里要用到显而易见 的阶乘逆元。

1 / n ! × n = 1 / ( n 1 ) ! 1/n!×n=1/(n-1)!
i n v ( n ! ) × n = i n v ( n 1 ) ! inv(n!)×n=inv(n-1)!

我们可以先求出1至 n n 的阶乘,然后算出 n ! n! 的逆元,即 i n v ( n ) inv(n) 的值,然后按照 i n v ( n ! ) × n = i n v ( n 1 ) ! inv(n!)×n=inv(n-1)! 一步步递推即可。

当然我们也可以用卢卡斯定理来求一些组合数。这里不再论述 (它不常用)

一些"模板"

(1)把 n n 个不同的球放到 k k 个不同的盘子里,每个盘子非空,求方案数。由于答案可能过大,请将其对998244353取模。

不要跟我说你要用dp做

本题是最经典的插板法。

即,我们要在 n n 个苹果之间插板,把 n n 个苹果分成 k k 个区域。由于插 k 1 k-1 个板即可得到 k k 的区域, n n 个苹果之间有 n 1 n-1 个间隙,所以本题的答案就是 C ( n 1 , k 1 ) C(n-1,k-1)

举个栗子: 当 n = 5 , k = 3 n=5, k=3 时求方案数。

○ ○ ○ ○ ○
我们要在 n 1 = 4 n-1=4 个空隙中插 k 1 = 2 k-1=2 个板。比如一种插板方式如下:

○ ○|○ ○|○
这样我们就把2个苹果分到了第一个盘子,2个苹果分到了第二个盘子,1个苹果分到了第三个盘子。

所以得到方案数为 C 4 2 = 6 C_4^2=6


(2)把 n n 个不同的球放到 k k 个不同的盘子里,每个盘子可以为空,求方案数。由于答案可能过大,请将其对998244353取模。

本题是经典的插板法。

即,我们要在 n + k n+k 个苹果之间插板,把 n + k n+k 个苹果分成 k k 个区域, i i 个区域的苹果树 a i a_i 表示第 i i 个盘子里放 a i 1 a_i-1 个苹果。由于插 k 1 k-1 个板即可得到 k k 的区域, n + k n+k 个苹果之间有 n k 1 n-k-1 个间隙,所以本题的答案就是 C ( n 1 , k 1 ) C(n-1,k-1)

举个栗子: 当 n = 5 , k = 3 n=5, k=3 时求方案数。

○ ○ ○ ○ ○ ○ ○ ○
我们要在 n + k 1 = 7 n+k-1=7 个空隙中插 k 1 = 2 k-1=2 个板。比如一种插板方式如下:

○ ○ ○|○ ○|○ ○ ○
这样我们就把3-1=2个苹果分到了第一个盘子,2-1=1个苹果分到了第二个盘子,3-1=2个苹果分到了第三个盘子。

所以得到方案数为 C 7 2 = 21 C_7^2=21

本篇文章将会持续更新,目前更新到4.21!

原创文章 19 获赞 27 访问量 1944

猜你喜欢

转载自blog.csdn.net/Cherrt/article/details/105668243
今日推荐