一.分类
普通型母函数 | (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。
(指数型母函数,分母阶乘和指数一样,比如 分母一定是2!)
④展开式系数代表方案数
比1g,2g,3g的球中各取一个,母函数写为(1+)(1+)(1+)
最后展开后 系数代表方案数
代表最大能凑出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