http://www.lydsy.com/JudgeOnline/problem.php?id=3028

题意:

每种食物的限制如下:
汉堡:偶数个;
可乐:0个或1个
鸡腿:0个,1个或2个
蜜桃:奇数个
鸡块:4的倍数个
包子:0个,1个,2个或3个
土豆:不超过一个。
面包:3的倍数个

问带$n$个物品的方案数(n<=10^500)

#include <bits/stdc++.h>
using namespace std; int main() {
int n=0; char c;
while(cin >> c) ((n*=10)+=c-'0')%=10007;
cout << ((n*(n+1)%10007)*(n+2)%10007)*1668%10007 << endl;
return 0;
}

  

学习了一下各种姿势= =

首先母函数易得= =

$$
\begin{align}
汉堡 & = x^0 + x^2 + x^4 + \cdots = \frac{1}{1-x^2} \\
蜜桃 & = x^1 + x^3 + x^5 + \cdots = \frac{x}{1-x^2} \\
面包 & = x^0 + x^3 + x^6 + \cdots = \frac{1}{1-x^3} \\
鸡块 & = x^0 + x^4 + x^8 + \cdots = \frac{1}{1-x^4} \\
土豆 & = x^0 + x^1 = \frac{1-x^2}{1-x} \\
可乐 & = x^0 + x^1 = \frac{1-x^2}{1-x} \\
鸡腿 & = x^0 + x^1 + x^2 = \frac{1-x^3}{1-x} \\
包子 & = x^0 + x^1 + x^2 + x^3 = \frac{1-x^4}{1-x} \\
\end{align}
$$

乘起来就是 $ f(x) = \frac{x}{(1-x)^4} $

根据泰勒展开$\sum_{i=0}^{\infty} x^i = \frac{1}{1-x}$

发现
$$ f(x) = x \left( \frac{1}{1-x} \right)^4 = x \left( \sum_{i=0}^{\infty} x^i \right)^4 $$

而$\left( \sum_{i=0}^{\infty} x^i \right)^n$中的$x$的$a$次项的系数是$\binom{a+n-1}{n-1}$

证明:

对于系数$a$,由于有$n$个多项式相乘,我们就设$a$由$n$个非负数的和。而由于有$0$的出现,我们将式子两边加上$n$,这样就能没负数啦= =。将这些数全部变成$1$的和,即$a+n = 1 + 1 + 1 + \cdots +1$,假设有$n-1$个竖线插在这$a+n$个$1$之间,即有$a+n-1$个位置,那么显然$\binom{a+n-1}{n-1}$就是答案= =(即分割成$n$份。

所以答案就是$f(x)$的$x$的$n$次系数,即$\binom{n+2}{3}$

【BZOJ】3028: 食物的更多相关文章

  1. bzoj 3028: 食物 -- 母函数

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MB Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...

  2. BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 497  Solved: 331[Submit][Status][Discuss] De ...

  3. BZOJ 3028 食物 (生成函数+数学题)

    题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...

  4. BZOJ 3028 食物 生成函数

    Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...

  5. bzoj 3028 食物——生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...

  6. BZOJ 3028: 食物

    \(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...

  7. bzoj 3028 食物 —— 生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 式子很好推,详细可以看这篇博客:https://blog.csdn.net/wu_to ...

  8. BZOJ 3028 食物 ——生成函数

    把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方 ...

  9. bzoj 3028: 食物【生成函数】

    承德汉堡:\( 1+x^2+x^4+...=\frac{1}{1-x^2} \) 可乐:\(1+x \) 鸡腿:\( 1+x+x^2=\frac{x^3-1}{x-1} \) 蜜桃多:\( x+x^3 ...

  10. bzoj 3028: 食物 生成函数_麦克劳林展开

    不管怎么求似乎都不太好求,我们试试生成函数.这个东西好神奇.生成函数的精华是两个生成函数相乘,对应 $x^{i}$ 前的系数表示取 $i$ 个时的方案数. 有时候,我们会将函数按等比数列求和公式进行压 ...

随机推荐

  1. Eclipse中怎么设置Add cast to Clazz 快捷键

    方法如下:window => preferences => 搜索keys => 然后点击进去,搜索add cast => 看到如图所示Quick Fix , 点击进去 => ...

  2. hdu 2393:Higher Math(计算几何,水题)

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. Ajax 数据库操作

    为了清楚的说明使用 Ajax 从数据库中存取信息有多么容易,我们要构建一个 MySQL 查询,然后把结果显示在ajax.html 上.但是在我们开始之前,让我们先做一些基础工作.使用下面的命令创建一个 ...

  4. Oracle 10g Block Change Tracking特性

    Using Block Change Tracking to Improve Incremental Backup Performance 使用块改变跟踪改善增量备份的性能 The block cha ...

  5. android 入门-动画与容器

    set 动画容器 可作为资源id添加R.anim.xxxx   可用于在样式表中添加  http://blog.csdn.net/liuhe688/article/details/6660823 in ...

  6. 开心网的账号登录及api操作

    .kaixin.php <?php /** * PHP Library for kaixin001.com * * @author */ class kaixinPHP { function _ ...

  7. Eclipse的详细安装步骤

    第一种:这个方法是在线安装的  第二种:下载完整免安装包 首先打开网址:http://www.eclipse.org/ 然后在这里我就选择64位的安装,就以安装安卓开发的举例: 然后下载即可:

  8. 对于JSP的调试

    在eclipse中调试JSP 我换了图片但是网页中的图片却不变化 我删了工程里的图片还是没用 看了一下Tomcat根目录..貌似也是没有的.. 最后我考虑换了HTML中图片的名字..并且更改了替换的图 ...

  9. YAML 技术研究

    YAML预研文档 YAML概要 YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:" ...

  10. 梳理源码中 View 的工作原理

    欢迎Follow我的GitHub, 关注我的掘金. 在View的工作过程中, 执行三大流程完成显示, 测量(measure)流程, 布局(layout)流程, 绘制(draw)流程. 从perform ...