BZOJ 3028 食物 (生成函数+数学题)
题面: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 食物 (生成函数+数学题)的更多相关文章
- BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 497 Solved: 331[Submit][Status][Discuss] De ...
- BZOJ 3028 食物 生成函数
Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...
- bzoj 3028 食物——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...
- bzoj 3028 食物 —— 生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 式子很好推,详细可以看这篇博客:https://blog.csdn.net/wu_to ...
- BZOJ 3028 食物 ——生成函数
把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方 ...
- bzoj 3028: 食物 生成函数_麦克劳林展开
不管怎么求似乎都不太好求,我们试试生成函数.这个东西好神奇.生成函数的精华是两个生成函数相乘,对应 $x^{i}$ 前的系数表示取 $i$ 个时的方案数. 有时候,我们会将函数按等比数列求和公式进行压 ...
- bzoj 3028: 食物 -- 母函数
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...
- 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 ...
- BZOJ 3028: 食物
\(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...
随机推荐
- [Javascript Crocks] Safely Access Object Properties with `prop`
In this lesson, we’ll use a Maybe to safely operate on properties of an object that could be undefin ...
- Android Studio左边栏Project不见了?
非常多Android Stuio刚開始学习的人可能会一不小心把左边的Project栏给关了.结果发现找非常久也没找到怎么再打开Project栏. 如图.点击左下角button,Project就出来了.
- Red Hat Linux分辨率调整
在/etc/X11下手动产生xorg.conf文件, # vi /etc/X11/xorg.conf 文件中内容如下: ##Add the following codes: Section " ...
- 2016.04.07,英语,《Vocabulary Builder》Unit 11
cant, from the Latin verbs canere and cantare, meaning 'sing'. by way of French, add an h to the roo ...
- h5-7 canvas
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- SVGImageView
In essence, I'm trying to layer multiple ImageViews (one of which is a floor plan, the other a recta ...
- 0x54 树形DP
树形DP我只知道千万别写森林转二叉树慢的要死 没有上司的舞会 水!裸! #include<cstdio> #include<cstring> #include<cstdl ...
- CNN中的局部连接(Sparse Connectivity)和权值共享
局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...
- Intellij IDEA社区版打包Maven项目成war包,并部署到tomcat上
转自:https://blog.csdn.net/yums467/article/details/51660683 需求分析 我们利用 Intellij idea社区版IDE开发了一个maven的sp ...
- day63-webservice 04.JaxWsServerFactoryBean和SOAP1.2
<wsdl:definitions xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap12="h ...