Description

Link.

包里有无穷多个巧克力,巧克力有 \(c\) 种颜色,每次从包里拿出不同颜色巧克力的概率都是相等的,桌面的巧克力不允许颜色相同,若某次拿出的巧克力与桌上的巧克力颜色相同了,则将两颗巧克力都吃掉。计算进行 \(n\) 次拿巧克力的操作后,桌上有 \(m\) 颗巧克力的概率。

Solution

本质是给在 \(c\) 种颜色选 \(m\) 种颜色每种选奇数次,剩下 \(c-m\) 中每种选偶数次。

构造那 \(c-m\) 种和 \(m\) 种的 egf:

\[\begin{aligned}
G_{1}(x)&=\sum_{i=0}^{\infty}\frac{x^{2i}}{(2i)!} \\
G_{2}(x)&=\sum_{i=0}^{\infty}\frac{x^{2i+1}}{(2i+1)!}
\end{aligned}
\]

换成 \(e\) 的形式:

\[\begin{aligned}
G_{1}(x)&=\frac{e^{x}-e^{-x}}{2} \\
G_{2}(x)&=\frac{e^{x}+e^{-x}}{2}
\end{aligned}
\]

那么方案数的 ogf 为:

\[G(x)=\left(\frac{e^{x}-e^{-x}}{2}\right)^{m}\times\left(\frac{e^{x}+e^{-x}}{2}\right)^{c-m}
\]

那么答案即为:

\[\frac{[G_{n}]\times n!\times\binom{c}{m}}{c^{n}}
\]

考虑怎么求出 \([G_{n}]\)。我们把 \(G\) 看成关于 \(e^{x}\),然后二项式展开后卷积:

\[\begin{aligned}
G(x)&=\left(\frac{e^{x}-e^{-x}}{2}\right)^{m}\times\left(\frac{e^{x}+e^{-x}}{2}\right)^{c-m} \\
&=2^{-c}\times\left(\sum_{i=0}^{m}\binom{m}{i}(-1)^{i}e^{x(m-2i)}\right)\times\left(\sum_{i=0}^{c-m}\binom{c-m}{i}e^{(2i+m-c)x}\right) \\
&=2^{-c}\times\left(\sum_{i=0}^{m}\sum_{j=0}^{c-m}(-1)^{i}\binom{m}{i}\binom{c-m}{j}e^{x(2m-2i+2j-c)}\right) \\
&=2^{-c}\times\left(\sum_{i=0}^{m}\sum_{j=0}^{c-m}(-1)^{i}\binom{m}{i}\binom{c-m}{j}\left(\sum_{k=0}^{\infty}\frac{(x(2m-2i+2j-c))^{k}}{k!}\right)\right)
\end{aligned}

\]

这份代码是在 POJ 上过的,至于 UVa 这边不想管了。

#include<bits/stdc++.h>
using namespace std;
int comb[210][210],c,n,m;
double ans;
double qpow(double bas,int fur)
{
double res=1;
while(fur)
{
if(fur&1) res*=bas;
bas*=bas;
fur>>=1;
}
return res;
}
int main()
{
for(int i=0;i<=100;++i) comb[i][0]=comb[i][i]=1;
for(int i=2;i<=100;++i) for(int j=1;j<i;++j) comb[i][j]=comb[i-1][j]+comb[i-1][j-1];
while(~scanf("%d",&c)&&c)
{
ans=0;
scanf("%d %d",&n,&m);
if(m>c||m>n||(n-m)%2) puts("0.000");
else
{
for(int i=0,now=1;i<=m;++i,now*=-1) for(int j=0;j<=c-m;++j) ans+=now*comb[m][i]*comb[c-m][j]*qpow(double(2*m-2*i+2*j-c)/c,n);
ans*=comb[c][m]; ans/=qpow(2,c);
printf("%.3f\n",ans);
}
}
return 0;
}

Solution -「POJ 1322」Chocolate的更多相关文章

  1. Solution -「ACM-ICPC BJ 2002」「POJ 1322」Chocolate

    \(\mathcal{Description}\)   Link.   \(c\) 种口味的的巧克力,每种个数无限.每次取出一个,取 \(n\) 次,求恰有 \(m\) 个口味出现奇数次的概率. \( ...

  2. Solution -「POJ 3710」Christmas Game

    \(\mathcal{Decription}\)   Link.   定义一棵圣诞树: 是仙人掌. 不存在两个同一环上的点,度数均 \(\ge 3\).   给出 \(n\) 棵互不相关的圣诞树,双人 ...

  3. 「POJ 3666」Making the Grade 题解(两种做法)

    0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...

  4. Solution -「ARC 104E」Random LIS

    \(\mathcal{Description}\)   Link.   给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...

  5. 「POJ Challenge」生日礼物

    Tag 堆,贪心,链表 Solution 把连续的符号相同的数缩成一个数,去掉两端的非正数,得到一个正负交替的序列,把该序列中所有数的绝对值扔进堆中,用所有正数的和减去一个最小值,这个最小值的求法与「 ...

  6. Solution -「CTS 2019」「洛谷 P5404」氪金手游

    \(\mathcal{Description}\)   Link.   有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...

  7. Solution -「BZOJ 3812」主旋律

    \(\mathcal{Description}\)   Link.   给定含 \(n\) 个点 \(m\) 条边的简单有向图 \(G=(V,E)\),求 \(H=(V,E'\subseteq E)\ ...

  8. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  9. 「POJ 3268」Silver Cow Party

    更好的阅读体验 Portal Portal1: POJ Portal2: Luogu Description One cow from each of N farms \((1 \le N \le 1 ...

  10. Solution -「简单 DP」zxy 讲课记实

    魔法题位面级乱杀. 「JOISC 2020 Day4」治疗计划 因为是不太聪明的 Joker,我就从头开始理思路了.中途也会说一些和 DP 算法本身有关的杂谈,给自己的冗长题解找借口. 首先,治疗方案 ...

随机推荐

  1. spring cloud gateway网关(一)之网关路由

    1.gateway相关介绍 在微服务架构中,系统往往由多个微服务组成,而这些服务可能部署在不同机房.不同地区.不同域名下.这种情况下,客户端(例如浏览器.手机.软件工具等)想要直接请求这些服务,就需要 ...

  2. 大家都说Java有三种创建线程的方式!并发编程中的惊天骗局!

    在Java中,创建线程是一项非常重要的任务.线程是一种轻量级的子进程,可以并行执行,使得程序的执行效率得到提高.Java提供了多种方式来创建线程,但许多人都认为Java有三种创建线程的方式,它们分别是 ...

  3. 搭建私人GPT及域名配置

    前几天在掘金看到一个搭建私人ChatGPT的教程,看起来并不难. 我也有OpenAI的API Key,然后前阵子我看到我的账号余额还有很多,我的api key其实就一个机器人在用,没用多少. 还有,就 ...

  4. The content of element type “web-app“ must match 解决方法

    报错原因 ‍ 问题描述 : 在创建 SpringMVC 时 , 选用 idea 的 webapp 模板来创建 , xml 配置文件中进行配置时发现提示警告 警告如下: ‍ ​ ​ 这错误大概的意思就是 ...

  5. CatBoost的分布式训练与调优:解决大规模数据集问题

    目录 <CatBoost 的分布式训练与调优:解决大规模数据集问题> 引言 随着深度学习的兴起,大规模数据集的存储和处理成为一个重要的技术挑战.由于数据集的规模巨大,传统的分布式训练方法已 ...

  6. Taurus .Net Core 微服务开源框架:Admin 插件【2】 - 系统环境信息管理

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[1] - 微服务节点管理 本篇继续介绍下一个内容: 1.系统环境信息节点 - OS-Environment 界面 基 ...

  7. 行行AI人才直播第4期: 跟随占冰强老师走近《如何定制企业专属AI大模型?》

    行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台. 每个企业定制专属AI大模型的目的都不同,比如某企业希望通过AI技术提升其客户服务和销售效果.该企业面临着庞大的商品数据.用户评 ...

  8. 快速上手 vercel,手把手教你白嫖部署上线你的个人项目

    一.关于 vercel Vercel 是一个云服务平台,支持静态网站(纯静态页面,比如现在base utils 文档也是基于vercel)和动态网站的应用部署.预览和上线.如果你用过 GitHub P ...

  9. JSGRID loaddata显示超级多空行

    这个逼问题困扰了我两天了 作为一个主后端的程序员 初体验前端技术栈真的麻之又麻 以防万一 请先确认 是不是和我一个情况 如果是 请往下看 首先 我们需要念一段咒语 json是json string是s ...

  10. Hive安装与启动

    一.mysql安装 在配置Hive之前一般都需要安装和配置MySQL,因为Hive为了能操作HDFS上的数据集,那么他需要知道数据的切分格式,如行列分隔符,存储类型,是否压缩,数据的存储地址等信息. ...