首页 > 代码库 > 菜鸟授徒系列之母函数

菜鸟授徒系列之母函数

这是第二次接触母函数类问题,相比于第一次的朦朦胧胧,第二次更加深刻。深深地感到母函数的强大,真是解决组合问题的一大法宝,将做过的题分类、总结加深一下记忆。

母函数包括:  普通生成函数(解决组合问题)

                          指数生成函数(解决排列问题)

这里全部是普通生成函数,可解决一系列组合问题,做题时要将题意与生成函数

G(x) = (1+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 2082 找单词

HDU 2110 Crisis of HDU

HDU 1171 Big Event in HDU

hdu 2152 Fruit

HDU 1085 Holding Bin-Laden Captive!

hdu 2079 选课时间(题目已修改,注意读题)

hdu 2189 悼念512汶川大地震遇难同胞——来生一起走


二、组合个数特定或存在范围,需另写一重循环

      hdu 2566 统计硬币

      hdu 2069 Coin Change 

 

菜鸟授徒系列之母函数