bzoj 3028 食物——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028
把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的样子,用组合意义看一下第 n 项的系数,就是 n-1 的可以不选的划分,即 C( n-1+3,3 ) 。为了高精度方便,化成 (n+2)*(n+1)*n/6 。
别忘了取模。
注意读入高精度数字的方法。错了几次之后只会一位一位地读了……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,base=1e2,mod=;
int a[N],b[N],c[N];
void rdn()
{
char ch=getchar();
while(ch>''||ch<'')ch=getchar();
while(ch>=''&&ch<='')
b[++b[]]=ch-'',ch=getchar();
for(int i=b[];i>;i-=)
a[++a[]]=(b[i-]<<)+(b[i-]<<)+b[i];
if(b[]&)a[++a[]]=b[];
for(int i=a[]+;i<=b[];i++)b[i]=;
}
void print(int *a)
{
printf("%d",a[a[]]);
for(int i=a[]-;i;i--)
printf("%02d",a[i]);
puts("");
}
void pls(int *b,int x)
{
b[]+=x;
for(int i=;i<=b[];i++)
{
if(b[i]<base)break;
b[i+]+=b[i]/base;b[i]%=base;
}
while(b[b[]+])
{
b[]++;
b[b[]+]+=b[b[]]/base;b[b[]]%=base;
}
}
void mul()
{
c[]=a[]+b[]-;
for(int i=;i<=a[];i++)
for(int j=;j<=b[];j++)
c[i+j-]+=a[i]*b[j];
for(int i=;i<=c[];i++)
c[i+]+=c[i]/base,c[i]%=base;
while(c[c[]+])
{
c[]++;
c[c[]+]+=c[c[]]/base;c[c[]]%=base;
}
for(int i=;i<=c[];i++)
a[i]=c[i],c[i]=;
a[]=c[]; c[]=;
}
void div(int *a,int x)
{
for(int i=a[];i;i--)
{
if(i>) a[i-]+=(a[i]%x)*base;
a[i]/=x;
}
while(a[]>&&!a[a[]])a[]--;
}
void upd(int *a)
{
for(int i=a[];i>;i--)
a[i-]+=a[i]%mod*base;
}
int main()
{
rdn();
for(int i=;i<=a[];i++)b[i]=a[i];
pls(b,);mul();
pls(b,);mul();
div(a,);upd(a);
printf("%d\n",a[]%mod);
return ;
}
bzoj 3028 食物——生成函数的更多相关文章
- BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 497 Solved: 331[Submit][Status][Discuss] De ...
- BZOJ 3028 食物 (生成函数+数学题)
题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...
- BZOJ 3028 食物 生成函数
Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...
- 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,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...
随机推荐
- webAPI支持跨域
问题描述: 添加引用:右键项目→添加nuget包 在:App_Start/WebApiConfig.Register中添加如下一句话 //跨域配置 config.EnableCors(new Enab ...
- linux下安装casperjs 开发运行环境
casperjs是一个基于phantomjs的测试框架,使用python进行操作,所以一个完整的casperjs环境需要安装phantomjs和python. 1 phantomjs安装 到官网下载最 ...
- CentOS 6.5 下的截图方法
1.利用命令模式 捕获整个屏幕 : $ gnome-screenshot 截完屏之后我们可以设置自定义图片存储位置,如图: 捕获当前终端Terminal : $ gnome-screenshot -w ...
- Spring-data-jpa常用方法
- 安装MySQL5.7.18遇到的坑
最近才注意到MySQL的各个版本之间差别还挺大的,比如5.5.x版本的timestamp类型列只能有一个设置为default CURRENT_TIMESTAMP的,于是尝试了换成一个新版本是mysql ...
- MySQL锁机制和PHP锁机制
模拟准备--如何模拟高并发访问一个脚本:apache安装文件的bin/ab.exe可以模拟并发量 -c 模拟多少并发量 -n 一共请求多少次 http://请求的脚本例如:cmd: apache安装路 ...
- linux下bwa和samtools的安装与使用
bwa的安装流程安装本软体总共需要完成以下两个软体的安装工作:1) BWA2) Samtools 1.BWA的安装a.下载BWA (download from BWA Source Forge ) h ...
- static 关键字详解 static方法调用非static属性和方法
静态的属性和方法在内存中的存放地址与非静态的是不同的,静态的是存放在static区,它意味着静态方法是没有this的,所以我们不可以从一个static方法内部发出对非static方法的调用.但是反之是 ...
- noi2009变换序列
noi2009变换序列 一.题目 1843 变换序列 2009年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 ...
- Request对象获得参数方法:query和body方法
express框架Request对象获得参数方法:query和body方法 req.query 该属性用法很简单,直接获取地址栏传递的参数:例如: //引入依赖 var express = requi ...