Loading [MathJax]/jax/output/HTML-CSS/jax.js

【BZOJ】3093: [Fdu校赛2012] A Famous Game

http://www.lydsy.com/JudgeOnline/problem.php?id=3093

题意:n个球(红和蓝两种),等概率有1~n个红球。首先取出p个球且这p个球里边有q个红球,问从剩下的球里边取一个红球的概率(n<=100000)

1
2
3
4
5
6
7
#include <cstdio>
using namespace std;
int main() {
    int T=0, p, n, q;
    while(~scanf("%d%d%d", &n, &p, &q)) printf("Case %d: %.4f\n", ++T, (q+1.0)/(p+2.0));
    return 0;
}

  

推完后公式能力大幅增长= =

感谢vfk的指导让我知道了一些关于高中课本的知识= =(haha我比小学森还差

感谢算法导论上概率论的知识

感谢××年××的关于概率论的一些论文....

感谢quartergeek的题解

感谢gyz的题解

然后好不容易推出了公式....最终化简极其漂亮...数学好美丽...

如果看不懂下边的公式,欢迎来问我!!!qq在右边!!

A为下一个拿红球的事件,B为拿走了p个球其中有q个球是红球的事件,Ck为原袋子中有k个红球的事件

P(A|B)=P(AB)P(B)=nk=0P(AB|Ck)P(Ck)nk=0P(B|Ck)P(Ck)

因为
P(AB|Ck)=P(BCk)P(Ck)P(ABCk)P(BCk)=P(B|Ck)P(A|BCk)

所以
P(A|B)=nk=0P(AB|Ck)P(Ck)nk=0P(B|Ck)P(Ck)=nk=0P(B|Ck)P(A|BCk)P(Ck)nk=0P(B|Ck)P(Ck)

显然
P(A|BCk)=kqnpP(Ck)=1n+1P(B|Ck)=(kq)(nkpq)(np)

所以
P(A|B)=nk=0P(B|Ck)P(A|BCk)P(Ck)nk=0P(B|Ck)P(Ck)=nk=0(kq)(nkpq)(kq)nk=0(kq)(nkpq)(np)=nk=0(kq+1)(nkpq)(q+1)nk=0(kq)(nkpq)(np)=q+1npnk=0(kq+1)(nk(p+1)(q+1))nk=0(kq)(nkpq)=q+1np(n+1p+2)(n+1p+1)=q+1p+2

哦,关于(n+1p+1)=nk=0(kq)(nkpq)窝来解释一下...

考虑p+1个球放在n+1个格子中,那么等价于枚举第q+1个球放的格子k+1,则前面有k个格子,后面则有nk个格子。那么前面有q个球方案数为(kq),后面有pq个球的方案数为(nkpq)。乘起来即可。

posted @   iwtwiioi  阅读(273)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示