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. ASP.NET Web Api 服务器端变了,客户端该如何修改请求(转载)

    转载地址:http://www.cnblogs.com/fzrain/p/3558765.html 前言 一旦我们将API发布之后,消费者就会开始使用并和其他的一些数据混在一起.然而,当新的需求出现时 ...

  2. hdu 1754:I Hate It(线段树,入门题,RMQ问题)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. [LeetCode] Word Break II (TLE)

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...

  4. Solr入门之(2)快速启动:第一个例子

    Solr作为一个web应用来启动,因此需要JDK支持,需要WEB容器,本文环境如下: JDK6.0或以上(环境变量设置等不再赘述) Tomcat-6.0.35或以上(自行下载) apache-solr ...

  5. yaf框架使用(centos6.5)

    安装好php环境之后 安装扩展包 $yum install php-devel /usr/bin/ 就会出现phpize工具包 下载yaf-2.2.8.gz源文件,解压后,进入源文件 phpize [ ...

  6. Oracle 11g新特性 -- 延迟段

    11gR2之前的版本中,当创建一张表时,会自动分配段空间,这样做有几个弊端: 1. 初始创建表时就需要分配空间,自然会占用一些时间,如果初始化多张表,这种影响就被放大. 2. 如果很多表开始的一段时间 ...

  7. JS判断输入值是否为正整数

    JS中的test是原来是JS中检测字符串中是否存在的一种模式,JS输入值是否为判断正整数代码: <script type=”text/javascript”> function test( ...

  8. PHP获取用户真实IP

    function get_client_ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP' ...

  9. hdu 4050 2011北京赛区网络赛K 概率dp ***

    题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内.当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数 0:表示不能到 ...

  10. PAT A 1013. Battle Over Cities (25)【并查集】

    https://www.patest.cn/contests/pat-a-practise/1013 思路:并查集合并 #include<set> #include<map> ...