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 ...
随机推荐
- 3.《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件
上面我们已经学过如何创建及操作文件,现在我们再来学习检查内容.当文件太长以至于屏幕一页显示不完时,这显得尤其重要.特殊情形下,如我们在第2.1章节开始部分中使用cat命令将内容展示到屏幕上,但这对于长 ...
- 使用第三方库(Senparc)完成小程序支付 - z
https://www.cnblogs.com/zmaiwxl/p/8931585.html
- LinqPad的变量比较功能
LinqPad是一个非常方便的C#工具(有免费版和收费版). 今天发现它的变量比较功能真是方便啊.且看3行代码产生如下结果: 说明:图中两个变量的成员属性值分别用红色和绿色背景标注:图很长,只截取了一 ...
- 调用不同目录类的protected构造器
一.问题 二.分析 调用不同目录类的protected构造器,IDE报错. 二.解决办法: 后面添加一个{}就可以了
- 【IDEA】Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目
转载请注明出处:http://blog.csdn.net/qq_26525215本文源自[大学之旅_谙忆的博客] 本篇博客讲解IDEA如何配置Tomcat. 大部分是直接上图哦. 点击如图所示的地方, ...
- *C#(WPF)--矩阵拖动和矩阵动画(拖动展开,不足动画效果)
最近在研发新的项目,遇到了一个桌面模式下的难点--展开动画.之前动画这方面没做过,也许很多人开始做的时候也会遇到相关问题,因此我把几个重点及实际效果图总结展示出来: 我的开发环境是在VS2017下进行 ...
- 记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)
0x01 前言 最近在做代码审计的工作中遇到了一个难题,题目描述如下: <?php include 'flag.php'; if(isset($_GET['code'])){ $code = $ ...
- Visual Studio2015安装过程以及单元测试
安装环境: 安装版本: Visual Studio2015 安装过程: 因为我是在第一次老师安排的作业的时候感觉VC++6.0不如VS方便所以才装的Visual Studio2015,又安装了点插件, ...
- Pair Project —— Elevator Scheduler
结对编程人员 12061153 刘丽萍 12061154 冯飘飘 说明结对编程的优点和缺点. 结对编程的优点: 以前都是自己一个人编程,对于相互结对或者团队编程都没有接触过.而自己在写代码时不可避免的 ...
- dxteam团队项目终审报告
一. 团队成员的简介和个人博客地址 M1阶段 http://www.cnblogs.com/dxteam/p/3991514.html M2阶段 新成员 邓亚梅 http://www.cnblogs. ...