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, ...
随机推荐
- mount加载虚拟机增强工具步骤
1.创建一个挂载目录sudo mkdir /mnt/cdrom 2.在C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso中添加该文件 3 ...
- 1014-34-首页15-计算原创微博的frame------计算cell的高度---计算 UILabel 的 CGSize 的方法
一.总体思路: 在控制器中,每次拿到数据模型(请求了数据.加载新微博)的时候,就调用 - (NSArray *)stausFramesWithStatuses:(NSArray *)statuses, ...
- opencv 图像的线性混合
1 线性混合理论 g(x) = (1-α)*f1(x) + α*f2(x) 其中,α代表图像的权重 #include<iostream> #include<opencv2/openc ...
- 笔记-scrapy-item
笔记-scrapy-item 1.总述 爬虫数据保存用,一般情况下无需过多处理,引用并使用Field方法即可. 2.使用 常规使用: import scrapy class Product(scrap ...
- rpm、yum命令
一.rpm命令 挂载光盘文件到/media目录: 进去/media目录下的Packages目录: 查看系统已安装的所有rpm包: 查看系统是否安装dhcp软件包: 安装dhcp软件包: 查看dhcp软 ...
- compileReleaseJavaWithJavac
如果你打release 包的时候,出现这个问题,那么请你先跑一下程序,肯定是有什么方法名,或者什么东西没找到. release 的时候不会报错,只有你跑的时候才会报错.
- 您的手机上未安装应用程序 android 点击快捷方式提示未安装程序的解决
最近APP出现一个很奇怪的问题,在Android 4.4.2和android 4.4.3系统上点击应用的快捷方式,打不开应用,而且会提示未安装程序. 确认了应用的MainActivity中设置了and ...
- Django基本使用
目录 1 安装 1.1 安装pip 1.2 安装django 2 创建项目 2.1 使用 管理工具 django-admin.py 来创建 PyLearn 项目: 2.2 启动服务 本文章以下所有列子 ...
- ADMX Migrator
实用工具特别推荐ADMX MigratorLance Whitney 下载这篇文章的代码: ADMX Migrator (2765KB) 对于那些 使用组策略的人而言,他们自然非常熟悉如何使用管理模板 ...
- spark发现新词
package com.icklick.spark.wordSegment import org.apache.log4j.{ Level, Logger } import org.apache.sp ...