\(\mathcal{Description}\)

  Link.

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

\(\mathcal{Solution}\)

  由于比较板(且要补的题太多),所以会简略一点。

  首先,\(n,m\) 不同奇偶;\(m\) 大于 \(c\) 或 \(n\) 无解,特判掉。考虑到“取出”有序,引入 \(\text{EGF}\)。显然题目要求:

\[[x^n]\binom{c}{m}\left(\frac{e^x+e^{-x}}2\right)^{c-m}\left(\frac{e^x-e^{-x}}2\right)^m
\]

  记后面这个式子为 \(G(x)\),推导:

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

  代入 \(k=n\),\(\mathcal O(n^2)\) 求解,注意精度。

\(\mathcal{Code}\)

#include <cstdio>

const int MAXC = 100;
int c, n, m;
double comb[MAXC + 5][MAXC + 5]; inline void init () {
comb[0][0] = 1;
for ( int i = 1; i <= MAXC; ++ i ) {
comb[i][0] = 1;
for ( int j = 1; j <= i; ++ j ) {
comb[i][j] = comb[i - 1][j - 1] + comb[i - 1][j];
}
}
} inline double qkpow ( double a, int b ) {
double ret = 1;
for ( ; b; a *= a, b >>= 1 ) ret *= b & 1 ? a : 1.0;
return ret;
} int main () {
init ();
while ( ~ scanf ( "%d", &c ) && c ) {
scanf ( "%d %d", &n, &m );
if ( ( n & 1 ) ^ ( m & 1 ) || m > c || m > n ) { puts ( "0.000" ); continue; }
double ans = 0;
for ( int i = 0; i <= c - m; ++ i ) {
for ( int j = 0; j <= m; ++ j ) {
ans += ( j & 1 ? -1 : 1 ) * comb[c - m][i]
* comb[m][j] * qkpow ( ( c - 2.0 * i - 2.0 * j ) / c, n );
}
}
ans = ans * comb[c][m] / qkpow ( 2, c );
printf ( "%.3f\n", ans );
}
return 0;
}

Solution -「ACM-ICPC BJ 2002」「POJ 1322」Chocolate的更多相关文章

  1. ACM/ICPC 之 平面几何-两直线关系(POJ 1269)

    题意:给定四点的坐标(x,y),分别确定两直线,求出其交点,若重合or平行则输出相应信息 用四个点的坐标算出直线通式(ax+by+c=0)中的a,b,c,然后利用a,b,c计算出交点坐标(其他公式不够 ...

  2. LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set(线性基,贪心)

    LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set $ solution: $ 这一题的重点在于优先级问题,我们应该先保证总和最大,然后再保证某一个最小.于是我 ...

  3. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  4. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...

  5. 「Windows MFC 」「Edit Control」 控件

    「Windows MFC 」「Edit Control」 控件

  6. SQL Server 2016 的「動態資料遮罩 (Dynamic Data Masking)」

    一些特別注重資訊安全.個人資料的公司或產業 (如: 金融.保險業),通常「測試用資料庫」的資料,會加上「遮蔽:去識別化」的功能,避免個資外洩.以往必須自己撰寫 SQL 語句或 Stored Proce ...

  7. 「ZJOI2019」&「十二省联考 2019」题解索引

    「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...

  8. 「bzoj1003」「ZJOI2006」物流运输 最短路+区间dp

    「bzoj1003」「ZJOI2006」物流运输---------------------------------------------------------------------------- ...

  9. 「bzoj1925」「Sdoi2010」地精部落 (计数型dp)

    「bzoj1925」「Sdoi2010」地精部落---------------------------------------------------------------------------- ...

随机推荐

  1. VC 2010 Express 学生版(中文版)

    Microsoft Visual C++ 2010 Express 学生版 下载传送门(提取码:r7sm) 如何安装 拿到压缩文件后,解压到桌面(别怕,安装完后这个文件夹是可以删除的). 在 &quo ...

  2. asyncio异步编程

    1. 协程 协程不是计算机提供,程序员认为创造 协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术,其实就是一个线程实现代码块相互切换执行.例如: def func1(): ...

  3. Echart可视化学习(八)

    文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 正文: 新增需求 点击 2020年 ...

  4. Java语言学习案例雷霆战机

    1.Java雷霆战机学习笔记(一)-资源加载 https://www.toutiao.com/i6631331313259381255/ 2.Java雷霆战机学习笔记(二)-音乐播放 https:// ...

  5. Spring循环依赖原理

    Spring循环依赖的原理解析 1.什么是循环依赖? ​ 我们使用Spring的时候,在一个对象中注入另一个对象,但是另外的一个对象中也包含该对象.如图: 在Student中包含了teacher的一个 ...

  6. 【reverse】逆向7 堆栈图

    [reverse]逆向7 堆栈图 前言 本章就是开始画堆栈图来打基础拉,堆栈熟悉了之后就可以开始C语言的逆向了. 这一章使用的exe文件,我已经上传到了我的个人网盘中,点击下载 1.准备工作 先看这张 ...

  7. 【刷题-LeetCode】200 Number of Islands

    Number of Islands Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. ...

  8. 【刷题-LeetCode】188 Best Time to Buy and Sell Stock IV

    Best Time to Buy and Sell Stock IV Say you have an array for which the i-th element is the price of ...

  9. ros实例_百度语音+图灵

    1 百度语音模块 参考http://blog.csdn.net/u011118482/article/details/55001444 1.1 百度语音识别包 git clonehttps://git ...

  10. 浅析Java中的线程池

    Java中的线程池 几乎所有需要异步或并发执行任务的程序都可以使用线程池,开发过程中合理使用线程池能够带来以下三个好处: 降低资源消耗 提高响应速度 提高线程的可管理性 1. 线程池的实现原理 当我们 ...