母函式入門

2021-08-07 17:49:49 字數 1272 閱讀 1257

母函式也叫生成函式,是組合數學中尤其是計數方面的乙個重要理論和工具。母函式有普通型母函式和指數型母函式兩種,其中普通型用的比較多。形式上說,普通型母函式用於解決多重集的組合問題,而指數型母函式用於解決多重集的排列問題。母函式還可以解決遞迴數列的通項問題(例如使用母函式解決斐波那契數列的通項公式)。

定義:

遞迴與母函式:

母函式題目小結:

母函式詳解與模板:

普通型母函式模板:

int num;//因子個數

int n1[maxn];//n1[i]表示該乘積表示式第i個因子的起始係數

int n2[maxn];//n2[i]表示該乘積表示式第i個因子的終止係數

int v[maxn];//v[i]表示該乘積表示式第i個因子的權重

int p;//p是可能的最大指數

int a[maxn], b[maxn];//a為計算結果,b為中間結果。

void solve()

}

普通型母函式優化模板(引入last變數):

int num;//因子個數

int n1[maxn];//n1[i]表示該乘積表示式第i個因子的起始係數

int n2[maxn];//n2[i]表示該乘積表示式第i個因子的終止係數

int v[maxn];//v[i]表示該乘積表示式第i個因子的權重

int p;//p是可能的最大指數

int a[maxn], b[maxn];//a為計算結果,b為中間結果。

int last;//最大的指數字置

void solve()

}

指數型母函式模板

int num;//物品個數   

int v[maxn];//v[i]表示第i個物品可以選的個數

int p;//p是要選的物品總數

double a[maxn], b[maxn];//a為計算結果,b為中間結果。

double c[maxn];

void factorial()

void solve()

}}答案為a[p]*c[p]

母函式入門

題目 hdu1028 題意 整數拆分 乙個整數能有幾種拆分方式 解答 其中一種方法是用母函式。對於這道題來說是 1 x x 2 x 3 x 4.1 x 2 x 4 x 6 x 8 x 10 1 x 3 x 6 x 9 一直到n 最後算出來了結果之後係數表示拆分的方法數,指數表示拆幾 先給 inclu...

母函式入門2

c 母函式入門2 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 話說上回講到hdu大戰東洋小苟,結果自然是中方大勝,這一戰也使得海東集團在全球同行業中的地位更加鞏固。隨...

母函式 入門習題

0ms 1500k 母函式。揹包 dp都行。include include typedef long long ll const int n 122 int n,f n tmp n int main printf d n f n return 0 0ms 1512k include include ...