生成函数(母函数)

本文深入探讨了生成函数在解决硬币兑换、整数拆分、组合选取等问题中的应用,并通过具体实例展示了如何利用生成函数解决HDU在线判题系统中的相关题目,如SquareCoins、Ignatius and the Princess III、Holding Bin-Laden Captive!等。此外,还分析了在实现算法时的优化技巧和避免超时的方法。

目录

一,生成函数

1,普通型生成函数

2,指数型生成函数

3,狄利克雷生成函数

二,生成函数的应用

1,硬币兑换问题

2,整数拆分问题

3,组合选取问题

4,骰子趣题

三,OJ实战

HDU 1398 Square Coins

HDU 1028 Ignatius and the Princess III

HDU 1085 Holding Bin-Laden Captive!

HDU 1171 Big Event in HDU(0-1背包)

HDU 1709 The Balance

HDU 2152 Fruit

OpenJ_Bailian 4120 硬币


一,生成函数

生成函数也叫母函数,是一种通过数列生成函数,研究函数从而得到数列本身的性质的一种方法。

按照函数形式,分为普通型生成函数、指数型生成函数、狄利克雷生成函数

1,普通型生成函数

用于解决组合问题

2,指数型生成函数

用于解决排列问题

3,狄利克雷生成函数

 

 

 

 

二,生成函数的应用

1,硬币兑换问题

2,整数拆分问题

3,组合选取问题

4,骰子趣题

问题:

2个点数不正常的骰子,都满足每个面上的点数是正整数(不同的面上可以有相同的点数),而且这2个骰子可以是不同的,独立地随机产生6个面上的点数中的一个。(比如说,如果2个骰子是1 2 3 6 6 8和2 3 3 4 4 4 ,那么和为10的概率就是7/36)神奇的是,2个骰子的点数之和也是2-12,而且出现的概率和点数正常的2个骰子出现2-12的概率对应相等!
那么这2个不正常的骰子点数到底是多少呢?(本题有唯一解)

解法:

求2个正整数系数的多项式,使得他们的乘积恒等于(x+x^2+x^3+x^4+x^5+x^6)^2 ,而且这2个多项式的系数和都是6(因为有6个面),同时,因为题目要求每个面的点数都是正的,所以2个多项式都没有常数项。
变成这样,这个问题就非常简单了。
设这2个多项式是f 和 g ,则f * g =(x+x^2+x^3+x^4+x^5+x^6)^2=x * (x + 1) * (x^2 - x + 1) * (x^2 + x + 1)*x * (x + 1) * (x^2 - x + 1) * (x^2 + x + 1)
根据多项式的唯一分解定理,f 和 g 就是把 (x)    (x + 1)   (x^2 - x + 1)    (x^2 + x + 1)   (x)  (x + 1)  (x^2 - x + 1)   (x^2 + x + 1) 这8个多项式划分而已。
因为f 和 g没有常数项,所以f 和 g 各含一个(x)
因为f的系数和是f(1),所以f(1)=6,同理g(1)=6,而(x)    (x + 1)   (x^2 - x + 1)    (x^2 + x + 1)这4个多项式在x=1处的值分别为 1 2 1 3 ,所以f  包含 (x + 1)和(x^2 + x + 1),g 也包含 (x + 1)和(x^2 + x + 1)
这就是生成函数的神奇之处!
因为是2个不同的骰子,所以 f 和 g 只能一个是x * (x + 1)  * (x^2 + x + 1),另一个是x * (x + 1) * (x^2 - x + 1) * (x^2 + x + 1)* (x^2 - x + 1),即x^4 + 2 x^3 + 2 x^2 +  x 和  x^8 +  x^6 +  x^5 +  x^4 +  x^3 +  x
即1个骰子是4 3 3 2 2 1 ,另外一个是8 6 5 4 3 1
ps: 433221可以看成321,432,就是把原来的654变成了432
865431可以看成864,531,就是把原来的642变成了864
至于这到底怎么解释,我记得我当年是理解的,现在已经不记得了。。。

三,OJ实战

HDU 1398 Square Coins

题目:
Description

People in Silverland use square coins. Not only they have square shapes but also their values are square numbers. Coins with values of all square numbers up to 289 (=17^2), i.e., 1-credit coins, 4-credit coins, 9-credit coins, ..., and 289-credit coins, are available in Silverland. 
There are four combinations of coins to pay ten credits: 

ten 1-credit coins, 
one 4-credit coin and six 1-credit coins, 
two 4-credit coins and two 1-credit coins, and 
one 9-credit coin and one 1-credit coin. 

Your miss

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值