1. 盒子放小球問題
n個小球,m個盒子。
1.1 n個小球有區別,m個盒子有區別
(1)允許空盒:每個球放到任意盒子裏,總方案數mn。
(2)不允許空盒:需滿足n≥m≥1 ,m>n時無解。其方案數及時看成m個盒子相同時的方案數,再乘以m!。答案即是S(n,m)∗m!。S代表第二類斯特林數。
1.2 n個小球有區別,m個盒子無區別
(1)允許空盒:假設放了k個盒,m≥k≥1。那麼答案就是∑k=1mS(n,k)。
(2)不允許有空盒:S(n,m)。
1.3 n個小球無區別,m個盒子有區別
(1)允許空盒:n≥m≥1。“隔板法”。假設不允許有空盒,每一個盒裏都先放一個小球,這樣小球共有n+m個,然後插板,插板的方案數爲Cn+m−1n−1。
(2)不允許空盒:n≥m≥1。“隔板法”。方案數Cn−1m−1。
1.4 n個小球無區別,m個盒子無區別
(1)允許空盒:劃分數問題。dp[i][j]表示i個球,j個盒子的方案數。轉移方程爲
dp[i][j]=dp[i−j][j]+dp[i][j−1](i≥j)
dp[i][j]=dp[i][j−1](i<j)
如果n<m,答案爲dp[n][n],否則爲dp[n][m]。
(2)不允許空盒:n≥m≥1。轉成上情況的n−m個小球,m個盒子。
2. 計數原理與計數公式
2.1 可重複的排列與組合
2.1.1 可重複的排列
從n個不同元素中取m個元素(同一元素可以重複取出),按照一定的順序排成一列。排列的個數爲nm。
2.1.2 可重複的組合
從n個不同元素中取m個元素(同一元素可以重複取出),併成一組。組合的個數爲Cn+m−1m。
【證明】
1,2,...,n表示n個不同元素。從中取m個可以表示成:
{i1,i2,...,im}(1≤i1≤i2≤...≤im≤n)
令jk=ik+(k−1),即:
j1j2j3...jm=i1=i2+1=i3+2=im+(m−1)
可以得到組合
{j1,j2,...,jm}(1≤j1<j2<...<jm≤n−m+1)
這樣就相當於在n+m−1個元素中取m個不相同的元素,作爲一組。
因此即是Cn+m−1m。
2.1.3 不全相異元素的全排列
n個元素中,分別有n1,n2,...,nk個元素相同,且n1+n2+...+nk=n,則稱這n個元素的全排列爲不全相異元素的全排列,個數爲
n1!n2!...nk!n!
2.1.4 多組組合
n個相異的元素分爲k(k≤n)個按照一定順序排列的組,其中第i組有ni個元素(i=1,2,...,k)(n1+n2+...+nk=n)。不同的分組方法爲
n1!n2!...nk!n!
【例】
從n(n≥6)個選手中選3對選手參加雙打,問共有多少種選法。
答案爲(注意不考慮組的順序)
3!Cn6∗2!∗2!∗2!6!
2.2 相異元素的圓排列和項鍊數
2.2.1 圓排列
n個元素不分首尾排成一圈,成爲n個相異元素的圓排列。排列的種數爲(n−1)!。
2.2.2 項鍊數
將n粒不相同的珠子,穿成一副項鍊,得到的不同的項鍊數。
由於項鍊順時針和逆時針都是相同的,所以個數即是圓排列的一半。
⎩⎨⎧1,n=1或n=221∗(n−1)!,n≥3
2.3 錯排問題
錯排遞推式。
D(n)代表n個數的錯排公式,則
D(n)=(n−1)∗[D(n−1)+D(n−2)]
錯排公式
D(n)=n!(1−1!1+2!1−3!1+...+n!(−1)n)
2.4 組合數常用公式
Cn2=2n∗(n−1)Cn3=6n∗(n−1)(n−2)Cnm=Cn−1m−1+Cn−1mm∗Cnm=n∗Cn−1m−1Cn0+Cn1+...+Cnn=2n1Cn1+2Cn2+...+nCnn=n2n−112Cn1+22Cn2+...+n2Cnn=n(n+1)2n−21Cn1−2Cn2+3Cn3+...+(−1)n−1nCnn=1+21+31+...+n1(Cn0)2+(Cn1)2+(Cn2)2+...+(Cnn)2=C2nn
範德蒙恆等式:
i=0∑kCniCmk−i=Cn+mk
經驗式(link https://www.cnblogs.com/qrsikno/p/10170523.html):
i=0∑nCni∗ri=(r+1)n(廣義二項式定理)i=0∑ni∗Cni=n∗2n−1i=0∑nCik=Cn+1k+1i=0∑kCn+ii=Cn+k+1k
3. 抽屜原理與平均值原理
3.1 抽屜原理
3.1.1 第一抽屜原理
如果將m個物件放入n個抽屜內,那麼必有一個抽屜內至少有[nm−1]+1個物件。
【推廣】
如果將m1+m2+...+mn+1個物件放入n個抽屜內,那麼或者第一個抽屜內至少有m1+1個物件,或者第二個抽屜內至少有m2+1個物件……或者第n個抽屜內至少有mn+1個物件。
3.1.2 第二抽屜原理
如果將m個物件放入n個抽屜內,那麼必有一個抽屜內至多有[nm]個物件。
【推廣】
如果將m1+m2+...+mn−1個物件放入n個抽屜內,那麼或者第一個抽屜內至多有m1−1個物件,或者第二個抽屜內至多有m2−1個物件……或者第n個抽屜內至多有mn−1個物件。
3.2 平均值原理
(1)設a1,a2,...,an是實數,A=n1(a1+a2+...+an),則a1,a2,...,an中必有一個數不小於A,也有一個數不大於A。
(2)設a1,a2,...,an是實數,G=n1na1a2...an,則a1,a2,...,an中必有一個數不小於G,也有一個數不大於G。
4. 生成函數
生成函數的定義:
實數序列 a0,a1,...,ak,...的生成函數是無窮級數
G(x)=a0+a2x+...+akxk+...=k=0∑∞akxk
ak的普通生成函數。
廣義二項式係數:
(ku)={u(u−1)(u−2)...(u−k+1)/k!,1,k>0k=0
【例】
(31/2)=3!(1/2)(1/2−1)(1/2−2)=6(1/2)(−1/2)(−3/2)=1/16
設x是實數,∣x∣<1,u是實數,那麼
(1+x)u=k=0∑∞(ku)xk
4.1 常用生成函數
1−x1−xn+1=k=0∑nxk1−ax1=k=0∑∞akxk(1−x)21=k=0∑∞(k+1)xk(1−x)n1=k=0∑∞Cn+k−1kxk(1+x)n1=k=0∑∞Cn+k−1k(−1)kxk
4.2 計數問題
5. 特殊計數序列
5.1 Catalan數列
前幾項:1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,......即c[0]=1,c[1]=1,c[2]=2...
遞推式1:f[n]=i=0∑n−1f[i]∗f[n−i−1]遞推式2:f[n]=n+14n−2f[n−1]組合式1:f[n]=n+1C2nn組合式2:f[n]=C2nn−C2nn−1
應用:
- 二叉樹計數1:已知二叉樹有n個節點,能夠構成Cn種不同的二叉樹。(二叉搜索樹)
- 二叉樹計數2:已知二叉樹的葉子n個,能夠構成Cn−1種不同的二叉樹。(二叉搜索樹)
- 括號匹配數:一個合法的表達式由()包圍,()可以嵌套和連接,給出n對括號,可以組成的合法表達式的個數爲Cn。
- 劃分問題:將一個凸n+2多邊形區域分成三角形區域的方法數爲Cn。
- 出棧問題1:一個棧的進棧序列爲1,2,3,..n,不同的出棧序列有Cn種。
- 出棧問題2:有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少種方法使得只要有10元的人買票,售票處就有5元的鈔票找零。5元的相當於入棧,10元的相當於出棧,轉化成上問題。
- 路徑問題:在n∗n的方格地圖中,從一個角到另外一個角,不跨越對角線的路徑數有Cn種。
- 握手問題:2n個人均勻坐在一個圓桌邊上,某個時刻所有人同時與另一個人握手,要求手之間不能交叉,共有Cn種握手方法。
5.2 Fibonacci數列
通項公式:Fn=51[(21+5)n−(21−5)n]
遞推式:
Fn=Fn−1+Fn−2
性質:
F1+F1+F2+F3+...+Fn=Fn+2−1F1+2F2+3F3+...+nFn=nFn+2−Fn+3+2F1+F3+F5+...+F2n−1=F2nF2+F4+F6+...+F2n=F2n+1−1F12+F22+F32+...+Fn2=FnFn+1Fn−1Fn+1−Fn2=(−1)n
定理:
FnFm+Fm−1Fn−1=Fm+n−1FmFn+1+Fm−1Fn=Fm+nm=n時,F2n−1=Fn2+Fn−12F2n=(Fn−1+Fn+1)Fn=(2Fn−1+Fn)FnFn整除Fm當且僅當n整除m,其中n≥3任意連續三個Fibonacci數兩兩互素。
5.3 Lucas數列
定義:
Ln=⎩⎪⎨⎪⎧2,1,Ln−1+Ln−2,n=1n=2n≥3
通項公式:
Ln=(21+5)n+(21−5)n
與Fibonacci數的關係:
F2n=LnFnLn=Fn−1+Fn+1Fn=5Ln−1+Ln+1Ln2=5Fn2+4(−1)n
5.4 Stirling數
5.4.1 第一類Stirling數
S1(n,m)表示的是將n個不同元素構成m個圓排列的數目。
遞推式:
S1(n,m)=(n−1)∗S1(n−1,m)+S1(n−1,m−1)(n>1,m>1)
邊界條件:
S1(0,0)=1,S1(n,0)=0S1(n,n)=1
性質:
k=0∑nS1(n,k)=n!
【例】n個倉庫, 2n把鑰匙,n 位官員。如果把n位官員分成m個不同的部,部中的官員數量與管理的倉庫數量一致。有多少種方案使得所有同部的官員可以打開所有本部管理的倉庫,而無法打開其他管理的倉庫。(n把鑰匙放到倉庫,n把鑰匙分給官員)
方案數即爲S1(n,m)n!。
前面的是放到倉庫裏的方案數,後面說官員的分配方案。
5.4.2 第二類Stirling數
S2(n,m)表示的是把n個不同元素劃分到m個集合的方案數。
遞推式:
S2(n,m)=m∗S2(n−1,m)+S2(n−1,m−1)(1≤m≤n−1)
邊界條件:
S2(n,0)=0,S2(n,1)=1S2(n,n)=1
5.5 Bernoulli數
6. Polya計數