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,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...
随机推荐
- 【ACM】hdu_zs3_1003_绝对值排序_201308100742
绝对值排序 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submissi ...
- Java 代理学习笔记
http://blog.csdn.net/mr_seaturtle_/article/details/52686516
- java SE与java EE , java ME之间的关系
question: Which one should I install when I want to start learning Java? I'm going to start with som ...
- 卷积神经网络(CNN)基础介绍
本文是对卷积神经网络的基础进行介绍,主要内容包含卷积神经网络概念.卷积神经网络结构.卷积神经网络求解.卷积神经网络LeNet-5结构分析.卷积神经网络注意事项. 一.卷积神经网络概念 上世纪60年代. ...
- 怎样在注冊表禁用或打开windows系统右键菜单
以下是禁用右键方法: 在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下 在右边的窗体中新 ...
- 【C++/数据结构】顺序表的基本操作
<span style="font-size:18px;"><strong>#pragma once #include <iostream> u ...
- nyoj--239--月老的难题(最小点覆盖)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- B1260 [CQOI2007]涂色paint 区间dp
这个题和我一开始想的区别不是很大,但是要我独自做出来还是有一些难度. 每一次涂色 只有这两种可能: 1) 把一段未被 覆盖过的区间 涂成 * 色 2) 把一段被一种颜色覆盖的区间涂成 * 色 (并且 ...
- JavaScript:对象
ylbtech-JavaScript:对象 1. JavaScript Array 对象返回顶部 1. JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值 ...
- Redis Sentinel哨兵配置
概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都 ...