BZOJ 3028食物
3028: 食物
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 89 Solved: 47
[Submit][Status]
Description
明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!
我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。
他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等
当然,他又有一些稀奇古怪的限制:
每种食物的限制如下:
承德汉堡:偶数个
可乐:0个或1个
鸡腿:0个,1个或2个
蜜桃多:奇数个
鸡块:4的倍数个
包子:0个,1个,2个或3个
土豆片炒肉:不超过一个。
面包:3的倍数个
注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。
Input
输入样例1
1
输出样例1
1
输入样例2
5
输出样例2
35
数据范围
对于40%的数据,1<=N<=100000;
对于所有数据,1<=n<=10^500;
Output
Sample Input
Sample Output
HINT
Source
首先列出所有食物的母函数
汉堡:1+x^2+x^4+.....=1/(1-x^2)
可乐:1+x
鸡腿:1+x+x^2
蜜桃多:x+x^3+x^5+.....=x/(1-x^2)
鸡块:1+x^4+x^8+....=1/(1-x^4)
包子:1+x+x^2+x^3
土豆:1+x
面包:1+x^3+x^6+...=1/(1-x^3)
母函数有一个很有用的用处:把所有食物的母函数相乘后,x^n项的系数就是答案
解法一:
那么我们把母函数相乘
[1/(1-x^2)]*(1+x)*(1+x+x^2)* [x/(1-x^2)]*[1/(1-x^4)] *[1+x+x^2+x^3]*[(1+x)]*[1/(1-x^3)]
化简后得到 x/(1-x)^4,过程略,化简主要用到的公式平方差公式和:1+x+x^2+x^3+......x^n=(x^(n+1)-1)/(x-1)还有:1+x+x^2+x^3+...x^(无限)=1/(1-x)
x/(1-x)^4 =x*(1/(1-x)^4)
=x*(1+x+x^2+x^3+x^4+.....x^(无限))^4
=x*((1+x+x^2+x^3+x^4+.....x^(无限))^2)^2
现在计算(1+x+x^2+x^3+x^4+.....x^(无限))^2
显然可得(1+x+x^2+x^3+x^4+.....x^(无限))^2=1+2x+3x^2+4x^3+......x^(无限)
显然这个多项式中系数是指数+1
然后可以计算1(1-x)^4了
x/(1-x)^4=x*(1+x+x^2+x^3+x^4+.....x^(无限))^4
=x*((1+x+x^2+x^3+x^4+.....x^(无限))^2)^2
=x*(1+2x+3x^2+4x^3+......x^(无限))^2
根据多项式乘法的定义
设A,B,C是3个多项式 F(A,I)表示多项式A中x^i项的系数
若A*B=C
则F(C,X)=∑(F(A,K)*F(B,X-K)) {K=0....X}
设A=B=1+2x+3x^2+4x^3+......x^(无限)
那么F(C,N-1)就是我们要求的答案
(注:由于x*(1/(1-x)^4),外面乘了个x,所以我们求的是F(C,N-1)而不是F(C,N))
观察1+2x+3x^2+4x^3+......x^(无限)的特性可知:
F(A,X)=X+1 F(B,X)=X+1
那么F(C,N-1)=∑(F(A,K)*F(B,N-1-K)) {K=0....N-1}
=∑((K+1)*(N-1-K+1)) {K=0....N-1}
=∑((K+1)*(N-K))
=∑(K*N-K^2+N-K)
=(∑K*N)-∑(K^2)+∑(N-K)
=(N*N*(N-1)/2)-(N*(N-1)*(2N-1)/6)+(N(N+1)/2)
=(N(N^2+1)/2)-(N*(N-1)*(2N-1)/6)
=(N(N^2+3N+2)/6)
=N(N+1)(N+2)/6
然后逆元什么的搞搞就好了
解法二:
如果有公式恐惧症的话,下面提供Stilwell大神的一种较清晰的解法
x*(1+x+x^2+x^3+x^4+.....x^(无限))^4
可以发现其中(1+x+x^2+x^3+x^4+.....x^(无限))^4的x^n项的系数为:将n整数划分成4个自然数的方案数
然后用类似插板一样的东西就行了
BZOJ 3028食物相关推荐
- BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 497 Solved: 331 [Submit][Status][Discuss] ...
- bzoj 3028: 食物(母函数+广义二项式定理)
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 717 Solved: 502 [Submit][Status][Discuss] ...
- [BZOJ 3028]食物(生成函数)
Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数. 他 ...
- bzoj 3028 食物——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...
- BZOj 3208 食物 生成函数+广义二项式定理
曾经搞过几天的生成函数,也没做几道题,后来放弃了,今天讲了生成函数和背包问题的结合,趁着脑子清醒整理一下: 题目描述: 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...
- bzoj 3028 生成函数
计算完后为 f(x): 根据我翻高数书,终于推倒出来了. (- ̄▽ ̄)- 转载于:https://www.cnblogs.com/TreeDream/p/7242684.html
- 黑暗爆炸OJ 3028. 食物 生成函数
传送门 文章目录 题意: 思考 题意: 思考 考虑将每个条件转换成生成函数: (1)f1(x)=1+x2+...=11−x2(1)f_1(x)=1+x^2+...=\frac{1}{1-x^2}(1) ...
- bzoj 3208 食物(生成函数)
先推一下生成函数 承德汉堡:偶数个 1 + x 2 + x 4 + x 6 + . . . . . . = 1 1 − x 2 1+x^2+x^4+x^6+...... =\frac{1}{1-x^2 ...
- ACM里的生成函数初探
生成函数 前情提要:由于本人不太喜欢写博客(懒),所以写的时候一般是由于某些原因写的专题内容.这次是2020CCPC长春热身赛的D题没做出来. 大佬论文放前面:推荐阅读:毛杰明 母函数的性质及应用 基 ...
最新文章
- 在游戏中强制关机,不能对关机提示框进行操作
- r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...
- caffe matio问题
- python调用c#注意事项_Python调用C#编写的DLL
- MySQL之——GROUP BY分组取字段最大值
- MySQL单机版Recycle Bin回收站功能
- (转)Spring Boot(十七):使用 Spring Boot 上传文件
- django笔记补充
- Linux CAT与ECHO命令详解 <<EOF EOF
- 访问线上平台出现http状态码“502”和“504”
- 无线通信(1)-无线通信链路结构
- 网站建设中做到需求分析细致,网站优化也就顺理成章了
- c报错pointer being freed was not allocated
- Windows平台的网速监控悬浮窗软件
- 《Mysql必知必会》
- Facebook - 150亿张照片海量存贮架构
- php中文的正则表达式_php汉字正则表达式
- Codeforces Round #548 C. Edgy Trees
- nginx代理ws协议
- Vue-2-计算属性、侦听器、过滤器、样式绑定