母函数基础

来源:互联网 发布:冰川网络上市股价多少 编辑:程序博客网 时间:2024/04/28 21:06

 

关于母函数的基本定义和初步认识参见杭电lcy的课件 (传送门) 另外还有一篇比较好的文章(传送门)。听着貌似不是那么简单的东西,其实很简单,看一下就懂了。

母函数解决的主要是这样一个问题:几组不同的数,每组选取一个数,相加得到一个结果,问可以有哪些结果并且每种结果的组合方案有几种。巧妙地利用了多项式的乘法以及多项式的化简(合并同类项)来解决问题。

下面是几道题目:(源自于HDU的DIY:http://acm.hdu.edu.cn/diy/contest_show.php?cid=9068)

 

Problem A:问一个整数有多少种拆分方法,如:4=4;4=1+3;4=2+2;4=1+1+2;4=1+1+1+1,即4有5种拆分方法

解析:这题最早做的时候用的是DP,是一种比较高效的方法,母函数也可以拿过来解这道题。

 

 

Problem B:问用289以内的平方数构成所给的数的方案有多少,与上题雷同

 

 

 

Problem C:有1 2 5三种硬币,给你每种硬币的个数,问最小的不能得到的钱数是多少

解析:如对面值为2的硬币,个数有n个,则其所对应的多项式为(1+x^2+x^3+.....+x^(2*n))

 

 

 

 

 

另外,这题用多重背包做更快更好

 
PROBLEM D:石子分堆问题,若干已知重量的石头,尽可能的平分 这题本来就是一个背包,母函数也可以解决
 
Problem E:求水果拼盘的方案数 要求水果的数量是a到b 那么其所对应的多项式为(x^a+..+x^b)
 
Problem F: 有一个天平(不带游标) 几个已知重量的砝码 问是否可以测量【1,s】内的重量 由于砝码不是只能放在一边的,所以用母函数的时候要加上负幂的情况,而解决负幂的一种方法就是将每一项的指数都加上s,这样就保证没有负幂了。最后结果判断的时候再减去s即可
 

 

 

原创粉丝点击