組合數學
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 每個數等於它上...