题面:BZOJ传送门

题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数

考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数

汉堡:$1+x^{2}+x^{4}+x^{4}...=\frac{1}{1-x^{2}}$

可乐:$1+x$

鸡腿:$1+x+x^{2}$

蜜桃:$x+x^{3}+x^{5}+x^{7}...=\frac{x}{1-x^{2}}$

鸡块:$1+x^{4}+x^{8}+x^{12}..=\frac{1}{1-x^{3}}$

包子:$1+x+x^{2}+x^{3}=(1+x)(1+x^{2})$

土豆:$1+x$

面包:$1+x^{3}+x^{6}+x^{9}...=\frac{1}{1-x^{3}}$

数据范围非常大,直接上生成函数会炸,而且模数也不支持$NTT$

把这些多项式乘起来,化简可得$f(x)=\frac{x}{(1-x)^{4}}$

一种做法是求导,再代入泰勒展开,然而我太弱了并没有推明白式子

$f(x)=\frac{x}{(1-x)^{4}}=x(\frac{1}{(1-x)})^{4}$

考虑$\frac{1}{1-x}$的本质,就是$1+x+x^{2}+x^{3}...$

而它的四次方就是$1+4x+10x^{2}+20x^{3}..$

即$C_{3}^{0}+C_{4}^{1}x+C_{5}^{2}x^{2}+C_{6}^{3}x^{3}...$

这不就是个躺着的杨辉三角么,那么第$n$项的结果就是$C_{n+3}^{n}$

然而还有一项$x$没算进去,相当于把整个多项式右移一位,即答案左移一位

最终答案变成了$C_{n+2}^{n-1}$

 #include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
#define dd double
#define N1 1010
using namespace std; const int mod=; int gint()
{
int ret=,fh=; char c=getchar();
while(c<''||c>''){if(c=='-')fh=-;c=getchar();}
while(c>=''&&c<=''){ret=ret*+c-'';c=getchar();}
return ret*fh;
} void exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){ x=; y=; return; }
exgcd(b,a%b,x,y); ll t=x; x=y; y=t-a/b*y;
}
char str[N1];
int a[N1],n; int main()
{
scanf("%s",str+);
int ret=,i; n=strlen(str+);
for(i=;i<=n;i++) ret=(ret*+str[i]-'')%mod;
ll inv,invy; ret=1ll*(ret+)*(ret+)%mod*(ret)%mod;
exgcd(,mod,inv,invy); inv=(inv%mod+mod)%mod; ret=1ll*ret*inv%mod;
exgcd(,mod,inv,invy); inv=(inv%mod+mod)%mod; ret=1ll*ret*inv%mod;
printf("%d\n",ret);
return ;
}

BZOJ 3028 食物 (生成函数+数学题)的更多相关文章

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

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

  2. BZOJ 3028 食物 生成函数

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

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

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

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

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

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

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

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

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

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

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

  8. 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 ...

  9. BZOJ 3028: 食物

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

随机推荐

  1. 洛谷——P1507 NASA的食物计划

    https://www.luogu.org/problem/show?pid=1507#sub 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力 ...

  2. SUSAN算子

  3. Mina airQQ聊天开门见山篇(一)

    Mina airQQ聊天开门见山篇(一) 近期项目可能要用到Mina,这个礼拜就在看这个框架,所以想写个小小的聊天的demo来巩固下,打算用几篇博客来记录下相关的知识 client用的是Flex Ai ...

  4. NS3网络仿真(3): NetAnim

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在NS3提供的演示样例first.py中,并没有生成NetAnim所须要的xml文件,本节我们尝试 ...

  5. MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

    一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...

  6. Swift - 获取当前时间的时间戳(时间戳与时间互相转换)

    (本文代码已升级至Swift3) 1,时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 2,获取当前时间的时 ...

  7. hdoj--2063--过山车(最大匹配)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. css兼容性的一些问题

    1. 文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高17px,上留白1px,下留白3px, ...

  9. js设计模式-适配器模式

    说明:适配器模式表面上看起来像门面模式.它们都要对别的对象进行包装并改变其呈现的接口.但是两者的差别在于它们如何改变接口.门面元素展现的是一个简化的接口,它并不提供额外的选择,而且有时为了方便完成常见 ...

  10. LVS十种调度算法介绍

    1.轮叫调度(Round Robin)(简称rr) 轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod ...