組合數學 隨記

2022-08-15 01:57:15 字數 2437 閱讀 7098

組合數學 

1.母函式

母函式(生成函式):   

生成函式有普通型生成函式和指數型生成函式兩種(本題是普通型)。

形式上,普通型母函式用於解決多重集的組合問題,

指數型母函式用於解決多重集的排列問題。

母函式還可以解決遞迴數列的通項問題(例如使用母函式解決斐波那契數列,catalan數的通項公式)。

1.普通母函式:  /*hdu2082*/

構造母函式g(x), g(x) = a0 + a1*x + a2* + a3* +....+ an*,  則稱g(x)是數列a0,a1…an的母函式。

通常普通母函式用來解多重集的組合問題,其思想就是構造乙個函式來解決問題,一般過程如下:

1.建立模型:物品n種,每種數量分別為k1,k2,..kn個,每種物品又有乙個屬性值p1,p2,…pn,(如本題的字母價值),

求屬性值為m的物品組合方法數。(若數量ki無窮 也成立,即對應下面式子中第ki項的指數一直到無窮)

2.構造母函式:g(x)=(1++…)(1+++…)…(1+++…)        (一)

=a0 + a1*x + a2* + a3* +....+ akk*     (設kk=k1·p1+k2·p2+…kn·pn)  (二)

g(x)含義: ak 為屬性值為k的組合方法數。

母函式利用的思想:

1.把組合問題的加法法則和冪級數的乘冪對應起來。

2.把離散數列和冪級數對應起來,把離散數列間的相互結合關係對應成為冪級數間的運算關係,最後由冪級數形式來

確定離散數列的構造。

**實現:

求g(x)時一項一項累乘。先令g=1=(1+0*x+0*+…0*),再令g=g*(1++…)得到形式(二)的式子…最後令g=g*(1+++…)。

2.指數型母函式  /*hdu1521*/

指數型母函式:(用來求解多重集的排列問題)

n個元素,其中a1,a2,····,an互不相同,進行全排列,可得n!個不同的排列。

若其中某一元素ai重複了ni次,全排列出來必有重複元素,其中真正不同的排列數應為 ,即其重複度為ni!

同理a1重複了n1次,a2重複了n2次,····,ak重複了nk次,n1+n2+····+nk=n。

對於這樣的n個元素進行全排列,可得不同排列的個數實際上是     /*hdu5651*/

若只對其中的r個元素進行排列呢,那就用到了指數型母函式。

構造母函式g(x)=+則稱g(x)是數列a0,a1…an的指數型母函式。

一般過程:

1.建立模型:物品n種,每種數量分別為k1,k2,..kn個,求從中選出m個物品的排列方法數。

2.構造母函式:g(x)=(1+ + …+)(1+ ++…)…(1+ ++…)

=a0+a1·x+  ·  + · +… ·     (其中pp=k1+k2+k3…kn)

g(x)含義:ai為選出i個物品的排列方法數。    

若題中有限定條件,只要把第i項出現的列在第i項的式中,未出現的不用列入式中。

如:物品i出現的次數為非0偶數,則原式改為…*(    +  +     )*…

2.catalan數

卡特蘭數(catalan):前幾項為 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670…

令h(0)=1,h(1)=1,catalan數滿足遞推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

另類遞推式:

遞推關係的解為:

遞推關係的另類解為:

對於在2n位的2進製中,有n個0,其餘為1,且1的累計數》=0的累計數,二進位制數有種

對於在n位的2進製中,有m個0,其餘為1的catalan數為:

理解:catalan數的理解

應用:1.出棧次序: 乙個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?          h(n)種。   /*hdu1032*/

2.給定節點組成二叉樹:給定n個節點,能構成多少種不同的二叉樹?    h(n)種。

3.括號化:矩陣連乘,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,有幾種括號化的方案?  h(n-1)種。

4.凸多邊形三角劃分:在乙個凸n邊形中,通過若干條互不相交的對角線,有多少種方法把這個多邊形劃分成若干個三角形? h(n-2)種。

/**/

3.容斥定理

容斥原理:(容許) 先不考慮重疊的情況,把包含於某條件中的所有物件的數目先計算出來,(排斥)然後再把計數時重複計算的數目排斥出去,使得計算的結果既無遺漏又無重複。

公式:            奇加偶減

一般求互質個數若用尤拉函式不好解決,則從反面考慮,用容斥。

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...

數學 組合數學

mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...

組合數學筆記

從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...