这是第二次接触母函数类问题,相比于第一次的朦朦胧胧,第二次更加深刻。深深地感到母函数的强大,真是解决组合问题的一大法宝,将做过的题分类、总结加深一下记忆。
母函数包括: 普通生成函数(解决组合问题)
指数生成函数(解决排列问题)
这里全部是普通生成函数,可解决一系列组合问题,做题时要将题意与生成函数
G(x) = (1+x+x^2+x^3+x^4....) (1+x^2+x^4+....) (1+x^3+x^6+.....)······.相结合。
母函数模板包括三重循环:第一重指除第一个括号外的括号数
第二重指括号内表达式长度(1+x2+x4....)里,第j个就是x2*j
第三重指表达式中x的指数
每次都要先将第一个括号内的表达式进行初始化。
这个博客里转载的讲解比较详细:
http://blog.csdn.net/lishuhuakai/article/details/8044431
(注释:若组合个数确定,则需要第四重循环,例如: hdu 2566 统计硬币)
HDU上的一些入门题:
一、货币数量不要求,即组合个数不确定:
1.货币的类型确定,数量无限,求组合数
G(x) = (1+x+x^2+x^3....) (1+x^2+x^4+x^6...) (1+x^3+x^6+....)····
hdu 1028 Ignatius and the Princess III
hdu 1398 Square Coins
2.货币的类型和数量确定,求组合数(求组合数中这类居多,包含一些简单的变形)
HDU 1085 Holding Bin-Laden Captive!
hdu 2189 悼念512汶川大地震遇难同胞——来生一起走
二、组合个数特定或存在范围,需另写一重循环