生成函数/母函数--排列组合的多项式写法

母函数理解(强烈建议)

母函数代码

一.分类

普通型母函数 (1+ax)^n多项式展开 组合问题
指数型母函数 展开式,分母比上面多个n! 排列问题

                       

二.形式理解:

每个括号代表一种物品的取法

②*可以类比逻辑与,+代表逻辑或

因此(1+x)(1+x^2)可以理解为,从1个质量为1g和1个质量2g中取的所有情况

=(x^0+x)(x^0+x^2)   x^0=1,所以1可以看作取0个,即不取的情况。

指数代表权值(比如质量)

当然指数和个数也有关系,比如,取2个1g和取1个2g,他们母函数指数一样,都是2。

(指数型母函数,分母阶乘和指数一样,比如\large x^{2} 分母一定是2!)

④展开式系数代表方案数

比1g,2g,3g的球中各取一个,母函数写为(1+x^{}^{})(1+x^{2})(1+x^{3})

最后展开后  系数代表方案数\large 1+x+x^{2}+2x^{3}+x^{4}+x^{5}+x^{6}   

代表最大能凑出6g,而凑出质量为3g有2种方案

三.进一步实现及代码

以每种物品总数划分,有限和无限两种题型:

Ⅰ.多项式展开后最大指数n<1e9(用数组能存下),用多项式乘法直接找;

比如给定2个1g,3个2g,组成6g有几种?

比如总共n个,无限个1g和2g,多少种情况?(隐含最大质量为2*n g)

Ⅱ.n过大,需要用数学方法化成公式。

比如总共n个,其中从1g和2g中取,有几种方法?

3.n过大还需要用到FFT,bzoj3771 待更

之后题目会讲。

hdu1521,2082 1709  1398

hdu2065  poj3734

hdu 1085 1028  1171 2069 2152

猜你喜欢

转载自blog.csdn.net/zjyang12345/article/details/89007595
今日推荐