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,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...
 
随机推荐
- 八、golang文本操作、json协议
			
一.终端读写 操作终端相关文件语句常量,go所有的都是接口 os.Stdin:标准输入 os.Stdout:标准输入,只要实现输出这个接口,打印到终端, os.Stderr:标准错误输出 os.Ope ...
 - 20145230《java学习笔记》第七周学习总结
			
20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...
 - linux内核调试+qemu+eclipse【转】
			
本文转载自:https://blog.csdn.net/WANG__RONGWEI/article/details/54922727 一.调试环境: 在ubuntu16.04下,在虚拟机里边运行的ub ...
 - javaMail发送邮件实例
			
背景:最近项目里有个实时发送邮件的功能,今天闲下来整理 一下,记录下来方便以后直接使用. 代码: package com.dzf.utils; import java.io.File; import ...
 - CentOS/Linux 卸载MATLAB
			
rm -rf /usr/local/MATLAB/R2012arm /usr/local/bin/matlab /usr/local/bin/mcc /usr/local/bin/mex /usr/l ...
 - netty上手
			
关于netty的基础NIO,请参见:NIO原理及实例 下面介绍Netty的上手使用: 首先为项目添加jar依赖: <dependency> <groupId>io.netty& ...
 - 错误 1 类型“System.Web.Mvc.ModelClientValidationRule”同时存在于“c:\Progra型“System.Web.Mvc.ModelClientValidationRule”同时存在
			
解决方案: step1:首先关闭你应用程序方案,在你保存项目的文件夹下找到ProjectName.csproj ProjectName是你实际的应用程序名称. step2:用文字编辑器打开你找到它找 ...
 - java基础(3)-多线程(1)
			
java多线程 进程与线程 进程:指一个正在执行的应用程序.每个进程执行都有一个执行顺序,该顺序称为一个执行路径或一个控制单元(进程是资源分配的最小单位).一个进程包含1~n个线程 线程:指进程中某个 ...
 - 直播P2P技术1-技术入门
			
1. 直播协议 直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等.每种协议都各有长短,比如RTMP延迟低,但诞生于Adobe,依赖于Flash Player,在如今FL ...
 - codeforces 705A:Hulk
			
Description Dr. Bruce Banner hates his enemies (like others don't). As we all know, he can barely ta ...