BZOj 3208 食物 生成函数+广义二项式定理

曾经搞过几天的生成函数,也没做几道题,后来放弃了,今天讲了生成函数和背包问题的结合,趁着脑子清醒整理一下;

题目描述:

明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 
我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。 
他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等 
当然,他又有一些稀奇古怪的限制: 
每种食物的限制如下: 
承德汉堡:偶数个 
可乐:0个或1个 
鸡腿:0个,1个或2个 
蜜桃多:奇数个 
鸡块:4的倍数个 
包子:0个,1个,2个或3个 
土豆片炒肉:不超过一个。 
面包:3的倍数个

注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。

输入样例1 

输出样例1 
1

输入样例2 

输出样例2 
35 
数据范围 
对于40%的数据,1<=N<=100000; 
对于所有数据,1<=n<=10^500;

对于小数据范围的,我们显然可以用dp的背包问题处理,那么对于本题这么大的范围,我们该怎么处理呢,这就要用生成函数搞一下了;

我们讲每一个要求编号;

对于1.偶数个:生成函数是1+$x^2$+$x^4$+$x^6$+$x^8$+...=$\frac{1}{1-$x^2$}$

对于2:1+x;

对于3:1+x+$x^2$=$\frac{1+$x^3$}{1-x}$;

算了我搞不了博客园的公式,还是搞图片吧;

来自ppt,其实每一个式子都很好推导;

 

对于式子七等,我们可以采取先求多项式的逆元,再将其化简的方法会比较方便;

那么这个题目就是让我们求f(x)的第n-1项,为什么是n-1呢,因为分子上的x相当于一个位移的作用;

那么我们探讨一下(1-x)-4的第[n]项系数怎么求;有两种思路;

第一种:广义二项式定理;

对于负数的情况,如下;

 

那么答案十分显然,我们将其展开,就是C(3,n+2)

 

第二种思路:对于这个母函数的第n项的系数,相当于不定方程x1+x2+x3+...+xn=4的非负整数解的个数,

 

这个问题可以用组合数学中的插板法解决,答案也为C(3,n+2);

 

注意:这里的n是已经减过1的n;

 

posted @ 2019-07-15 13:29  Tyouchie  阅读(266)  评论(0编辑  收藏  举报