ZOJ1363 Chocolate 【生成函数】 【泰勒展开】
题目大意:
有c种不同的巧克力,每种无限个,意味着取出每种的几率每次为1/c。现在你需要取n次。然后将统计每种取出来的巧克力的数量。若为偶数则舍去,否则留下一个。问最后留下m个的概率是多少。
题目分析:
由于取出每种巧克力的概率始终相同,。不妨假设取出奇数个的巧克力正好是1~m,m+1则取出偶数次,然后求出这种情况的次数。最后答案乘以C(c,m)再除以c^n即可。由于可以取出相同的巧克力,所以采用指数型生成函数。
对于前m种,构造g(x)=x/1!+x^3/3!+x^5/5!.....=sinh(x),后面类似地构造出h(x)=cosh(x).答案就是sinh^m(x)*cosh^(c-m)(x)的n阶导数。
将sinh(x)和cosh(x)写出来。得到e^x-e^(-x)/2和e^x+e^(-x)/2.其中加减法优先于除法。带入原式就得到了(e^x-e^(-x)/2)^m(x)*(e^x+e^(-x)/2)^(c-m)(x).通过二项式定理展开,然后乘起来。最后对e^kx单独泰勒展开。
结果就是这些的和。值得注意的是这题会爆longlong,应该把过程取对数。
代码:
#include<bits/stdc++.h>
using namespace std; int c,n,m; double C[][];
double res[][]; void work(){
memset(res,,sizeof(res));
if(m > c){puts("");return;}
int A = m,B = c-m;
double ans = ;
for(int i=;i<=B;i++){
for(int j=;j<=A;j++){
int f = ;
if(A-B+*i-*j < &&(n&)) f *= -;
if(j & ) f *= -;
res[i][j] = C[B][i]+C[A][j]+(double)n*log10(abs(A-B+*i-*j));
res[i][j] -= (double)c*log10(2.0);
res[i][j] += C[c][m];
res[i][j] -= (double)n*log10(c);
if(res[i][j] < -) continue;
ans += f*pow(,res[i][j]);
}
}
printf("%.3lf\n",ans+1e-8);
} int main(){
for(int i=;i<=;i++){
for(int j=;j<i;j++){
C[i][j] = C[i][j-]+log10(i-j+)-log10(j);
}
}
do{
scanf("%d",&c);
if(c == ) break;
scanf("%d%d",&n,&m);
work();
}while(true);
return ;
}
ZOJ1363 Chocolate 【生成函数】 【泰勒展开】的更多相关文章
- BZOJ3028食物——生成函数+泰勒展开
题目描述 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这次又准备带一些 ...
- ZOJ1363 Chocolate
Chocolate Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In 2100, ACM chocolat ...
- 2019.01.02 poj1322 Chocolate(生成函数+二项式定理)
传送门 生成函数好题. 题意简述:一个袋子里有ccc种不同颜色的球,现要操作nnn次,每次等概率地从袋中拿出一个球放在桌上,如果桌上有两个相同的球就立刻消去,问最后桌上剩下mmm个球的概率. 第一眼反 ...
- HDU-6397(2018 Multi-University Training Contest 8) Character Encoding(生成函数+组合数学)
题意 从$0$到$n-1$的数字里可重复的取至多$m$个数的和等于$k$的方案数. 思路 显然的生成函数的思路为构造 $(1+x+x^{2}+...+x^{n-1})^{m}$ 那么$x^{k}$的系 ...
- 多项式&生成函数(~~乱讲~~)
多项式 多项式乘法 FFT,NTT,MTT不是前置知识吗?随便学一下就好了(虽然我到现在还是不会MTT,exlucas也不会用) FTT总结 NTT总结 泰勒展开 如果一个多项式\(f(x)\)在\( ...
- 数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群)
数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群) 因为不会做目录所以请善用ctrl+F 本来想的是笔记之类的,写着写着就变成了资源整理 一些有的 ...
- [2018集训队作业][UOJ450] 复读机 [DP+泰勒展开+单位根反演]
题面 传送门 思路 本文中所有$m$是原题目中的$k$ 首先,这个一看就是$d=1,2,3$数据分治 d=1 不说了,很简单,$m^n$ d=2 先上个$dp$试试 设$dp[i][j]$表示前$i$ ...
- 【BZOJ5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT
[BZOJ5020][THUWC 2017]在美妙的数学王国中畅游 Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数 ...
- BZOJ 3028 食物 (生成函数+数学题)
题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...
随机推荐
- 外部Jenkins调用容器中Slave配置实践
1.Jenkins配置 实现动态生成的Slave节点并调用,解决构建项目出现slave节点任务堵塞或者是slave宕机问题.容器平台采用openshift. 参考配置文档:https://blog.c ...
- (原创)odoo在docker环境下无法备份
odoo容器内置postgresql-client版本和数据库版本不一致,安装和数据库版本相同或者更高版本的客户端 参考:https://www.postgresql.org/download/lin ...
- linux配置iptables(3)
简单通用 web 服务器iptables 配置 *filter :INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0] #超出 链规则 的数据 ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...
- TensorFlow入门(五)多层 LSTM 通俗易懂版
欢迎转载,但请务必注明原文出处及作者信息. @author: huangyongye @creat_date: 2017-03-09 前言: 根据我本人学习 TensorFlow 实现 LSTM 的经 ...
- Java Web应用开发中的一些概念
最近在学习Java Web,发现Java Web的概念很多,而且各个概念之间的关系也挺复杂,本篇博客把这些关系总结于此,主要参考的博客附在文章末尾. 概念 服务器 服务器,硬件角度上说就是一台高性能的 ...
- ML.NET 示例:开篇
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- JDK8漫谈——集合更强大
解决什么问题 集合计算不足 解决重复代码 背后思想 管道 封装 数据处理 内容说明 是什么 计算担当.集合用于数据存储,流用于数据计算,不会修改原始数据 内置循环.高级迭代器,内置循环和计算 单向.数 ...
- C#_委托的使用
C#基础---委托的使用 一:什么是委托 委托是一种定义方法签名的类型当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联.您可以通过委托实例调用方法.委托是一个引用类型,所以它具 ...
- nginx应用总结(1)-- 基础知识和应用配置梳理
在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介Nginx是一个高性能的HTTP和反向代理服务 ...