Bzoj3093 [Fdu校赛2012] A Famous Game
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 251 Solved: 136
Description
Input
Output
Sample Input
3 0 0
4 2 1
Sample Output
Case 2: 0.5000
HINT
[Explanation]
For example as the sample test one, there are three balls in the bag. The possibilities of the four possible situations are all 0.25. If there are no red balls in the bag, the possibility of the next ball are red is 0. If there is one red ball in the bag, the possibility is 1/3. If there are two red balls, the possibility is 2/3. Finally if all balls are red, the possibility is 1. So the answer is 0*(1/4)+(1/3)*(1/4)+(2/3)*(1/4)+1*(1/4)=0.5.
Source
数学问题 概率
推出来答案就是(q+1)/(p+2)
可能是近一年写过最短的代码
————————至于怎么推出来的?
http://www.cnblogs.com/neighthorn/p/6440645.html 参考了这里
首先要了解一些公式:
$ P(B)=\sum P(Ai)*P(B|Ai) $ 全概率公式,A是前置条件,B发生的概率是A取遍所有情况下发生B的概率的和
$ P(A|B)=P(AB)/P(B) $ 条件概率公式,B条件下发生A的概率等于“同时发生AB的概率/发生B的概率”
然后看具体题目:
设事件A为:按照题意,再抽出一个球为红色球的概率
设事件B为:抽出P个球,其中有q个球为红色的概率
设事件Ki为:起初有Ki个红球的概率
$ ANS=P(A|B)/P(B)=\frac{P(AB)}{P(B)} $
变形为
$\frac{ \sum_{i=0}^{N} P(AB|Ki)P(Ki)}{ \sum_{i=0}^{N} P(B|Ki)P(Ki)}$
==
$\frac{ \sum_{i=0}^{N} P(A|BKi)*P(B|Ki)*P(Ki)}{ \sum_{i=0}^{N} P(B|Ki)P(Ki)}$
上下形式很像,可惜K不同,不满足分配率,不能全约分掉
红球的个数从0~N等概率,所以每种情况出现的概率都是$ P(Ki)= \frac{1}{n+1} $
所以上式的P(Ki)可以约掉了
剩下的部分怎么办?
$ P(B|Ki)=\frac{C_{k}^{q}*C_{p-q}^{n-k} }{C_{n}^{p}} $
↑ 从红球中选q个的方案乘从蓝球中拿p-q个的方案除以所有拿的方案,看上去没毛病
$ P(A|BKi)=\frac{P(ABKi)}{P(BKi)}=\frac{k-q}{n-p} $
剩下n-p个球中有k-q个红球,看上去没毛病。也可以用条件概率公式约一波
得到:
$ \frac{ \sum_{i=0}^{N} \frac{k-q}{n-p} *\frac{ C_{k}^{q}C_{n-k}^{p-q}}{ C_{n}^{p}} } { \sum_{i=0}^{N} \frac{ C_{k}^{q}C_{n-k}^{p-q}}{ C_{n}^{p}}} $
那个$(k-q)/(n-p)$好麻烦,得想个办法处理掉。
$ C_{k}^{q}=\frac{k!}{q!(k-q)!}=\frac{k!}{q!(k-q-1)!}*(k-q) $
$ C_{k}^{q+1}=\frac{k!}{(q+1)!(k-q-1)!}=\frac{k!}{q!(k-q-1)!}*(q+1) $
于是把式子变形成:
$ \frac{ \sum_{i=0}^{N} \frac{q+1}{n-p} *\frac{ C_{k}^{q}C_{n-k}^{p-q}}{ C_{n}^{p}} } { \sum_{i=0}^{N} \frac{ C_{k}^{q}C_{n-k}^{p-q}}{ C_{n}^{p}}} $
这样就消除了又一处k的影响
从网上找来一个公式:
于是得到
$\frac{C_{n+1}^{p+2}}{C_{n+1}^{p+1}} *\frac{q+1}{n-p}$
再一化简就是(q+1)/(p+2)
————————
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*-''+ch;ch=getchar();}
return x*f;
}
int n,p,q;
int main(){
int cas=;
while(scanf("%d%d%d",&n,&p,&q)!=EOF){
printf("Case %d: %.4f\n",++cas,(q+1.0)/(p+2.0));
}
return ;
}
Bzoj3093 [Fdu校赛2012] A Famous Game的更多相关文章
- BZOJ 3093: [Fdu校赛2012] A Famous Game
3093: [Fdu校赛2012] A Famous Game Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 242 Solved: 129[Subm ...
- 【BZOJ】3093: [Fdu校赛2012] A Famous Game
http://www.lydsy.com/JudgeOnline/problem.php?id=3093 题意:n个球(红和蓝两种),等概率有1~n个红球.首先取出p个球且这p个球里边有q个红球,问从 ...
- 【BZOJ】【3093】【FDU校赛2012】A Famous Game
概率论 神题不会捉啊……挖个坑先 orz 贾教 & QuarterGeek /********************************************************* ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- SCNU省选校赛第二场B题题解
今晚的校赛又告一段落啦,终于"开斋"了! AC了两题,还算是满意的,英语还是硬伤. 来看题目吧! B. Array time limit per test 2 seconds me ...
- 2014上半年acm总结(1)(入门+校赛)
大一下学期才开始了acm,不得不说有一点迟,但是acm确实使我的生活充实了很多,,不至于像以前一样经常没事干= = 上学期的颓废使我的c语言学的渣的一笔..靠考前突击才基本掌握了语法 寒假突然醒悟, ...
- 2017CUIT校赛-线上赛
2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ...
- HZNU第十二届校赛赛后补题
愉快的校赛翻皮水! 题解 A 温暖的签到,注意用gets #include <map> #include <set> #include <ctime> #inclu ...
- 校赛F
问题描述 例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3].换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, ...
随机推荐
- 4W条人才表循环处理业务sql优化过程
场景: 使用windows服务定时更新合同数据:执行存储过程(pas_RefreshContractStatus),但存储过程里面有一个需要更新4W条人才表循环处理业务 问题: 循环更新4W条人才表状 ...
- xml中Node和Element的区别
本文转载自:http://blog.csdn.net/wcydiyi/article/details/4432636点击打开链接 1.元素(Element)和结点(Node)的区别: ...
- PHP时间日期操作增减(date strtotime) 加一天 加一月
date_default_timezone_set('PRC'); //默认时区 //当前的时间增加5天 $date1 = "2014-11-11"; echo date('Y-m ...
- C++ 基础 引用
1.引用的本质 int b = 10; int &a = b; 等效于: int * const a = &b; 由于 a 是 const声明,所以一旦定义无法修改,所以要在定义时就要 ...
- 图像的模糊-opencv
调用两个API,一个是均值模糊,一个是高斯模糊.如下所示: #include<opencv2/opencv.hpp> #include<iostream> using name ...
- 13-在Core Mvc中使用Options
配制文件appsettings和Classes来自12节 在HomeController增加如下代码,使用IOption方式进行注入 public class HomeController : Con ...
- Java线程和多线程(五)——单例类中的线程安全
单例模式是最广泛使用的创建模式之一.在现实世界之中,诸如Databae的连接或者是企业信息系统(EIS)等,通常其创建都是受到限制的,应该尽量复用已存在对象而不是频繁创建销毁.为了达到这个目的,开发者 ...
- PowerCmd
今天在手机上看慕课网,看到一个好玩的东西.Powercmd. 一开始的感觉是,妈的,我会cmd命令,为什么要用你的cmd? 后来,用了之后,感觉,嗯,还是Powercmd好用.功能强大. 我们来看看它 ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...
- 《Cracking the Coding Interview》——第2章:链表——题目4
2014-03-18 02:27 题目:将一个单链表按照一个值X分为两部分,小于X的部分放在大于等于X的部分之前. 解法:按照值和X的大小,分链表为两条链表,然后连起来成一条. 代码: // 2.4 ...