题意:有n个球,其中有0、1、2...n个黑球的概率是相等的,现在从中取出L个球,p个黑球q个白球。现在问猜一个黑球的区间,使得落在这个区间的概率大于给定的一个数值。

详见代码:

#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std; int n, p, q, pri;
/*
n个球,取出p+q个球,其中黑球p个,白球q个,要求的概率最低值为p
设n个球中有k个黑球的事件为Ak ,设取出p+q个球中有p个黑球为事件B
题目所有概率为sum{p(Ak|B)}>=pri的k的取值区间
p(Ak|B)不好求解,通过贝叶斯公式p(Ak|B) = p(B|Ak)*p(Ak)/p(B)其中
p(B|Ak) = C(p, k) * C(q, n-k) / C(p+q, n);
p(B) = sum( p(B|Ak) * p(Ak) ) k = 0...n;
由于有多少个黑球是等概率的,因此p(Ak)可以提出来约掉
p(Ak|B) = p(B|Ak) / sum( p(B|Ak) );
p(Ak|B) = (C(p, k) * C(q, n-k)) / sum( (C(p, t) * C(q, n-t)) ) 其中t的取值
为枚举的区间[0, n]
上式能够用来求出某个k值的概率值,由于需要枚举一个区间,那么将
这个区间的所有概率相加即可
*/ const double eps = 1e-;
typedef long long LL;
LL tot, seq[];
LL c[][]; int sign(double x) {
return x < -eps ? - : x > eps;
} void init() { // init用来计算
c[][] = ;
for (int i = ; i <= ; ++i) {
c[][i] = ;
for (int j = ; j <= i; ++j) {
c[j][i] = c[j-][i-] + c[j][i-];
}
}
} bool check(int a, int b) {
LL x = ;
for (int i = a; i <= b; ++i) {
x += c[p][i] * c[q][n-i];
}
return sign(100.0 * x / tot - pri) >= ;
} void gao() {
tot = ;
for (int i = ; i <= n; ++i) {
tot += c[p][i] * c[q][n-i];
}
int rl, rr, len = ;
for (int i = ; i <= n; ++i) { // 枚举区间
for (int j = i; j <= n; ++j) {
if (j-i+ >= len) continue;
if (check(i, j)) {
rl = i, rr = j, len = j-i+;
}
}
}
printf("%d %d\n", rl, rr);
} int main() {
init();
while (scanf("%d %d %d %d", &n, &p, &q, &pri) != EOF) {
gao();
}
return ;
}

sgu-508 Black-white balls 概率-贝叶斯公式的更多相关文章

  1. [HackerRank]Choosing White Balls

    [HackerRank]Choosing White Balls 题目大意: 有\(n(n\le30)\)个球排成一行,每个球的颜色为黑或白. 执行\(k\)次操作,第\(i\)次操作形式如下: 从\ ...

  2. SGU 183. Painting the balls( dp )

    dp..dp(i, j)表示画两个点为i-j, i的最优答案. dp(i, j) = min{ dp(i-j, k) } + cost[i] (1≤k≤M-j) 令f(i, j) = min{dp(i ...

  3. sgu 183. Painting the balls 动态规划 难度:3

    183. Painting the balls time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard ...

  4. SGU 422 Fast Typing(概率DP)

    题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]. 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间.在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且 ...

  5. SGU 183 Painting the balls (优化的动态规划)

    题意:给n个白球,选其中一些涂为黑色,且给了涂第i个球的花费为ci,要求每m个连续的球中至少有两个黑球,问最小花费是多少? 容易想到一个方程dp[i][j]=min{dp[k][i]}+c[j] dp ...

  6. SGU 246. Black & White(数论)

    题意: 有2*n-1个黑色和白色的珠子组成的环形项链,求至少需要多少颗黑色珠子才能使任意排列的项链中都存在两个黑珠间有n个珠子. (2*n-1<=2^31-1); Solution: 先分析n= ...

  7. SGU 183.Painting the balls

    时间限制:0.25s 空间限制:4M 题意:  在n(n<=10000)个球中,给若干个球涂色,每个球涂色的代价为Ci,使得任意连续m(m<=100)个球中有至少两个球被涂了色. Solu ...

  8. 加州大学伯克利分校Stat2.2x Probability 概率初步学习笔记: Section 1 The Two Fundamental Rules (1.5-1.6)

    Stat2.2x Probability(概率)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...

  9. HDU 5194 DZY Loves Balls

    DZY Loves Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. java技术用ssh从linux服务器下载数据

    通常需要从linux服务器获取数据文件,而通常能有的访问方式只有ssh,所以就可以用ssh进行数据下载. java连接远程主机的方式有多种,这里和大家分享的是通过ssh方式连接远程主机,使用的是jsc ...

  2. UIView完全置顶的方法

    一般来说,若需要独立添加一个UIView,使其覆盖于整个应用窗口之上,是这样实现的: AppDelegate *app = (AppDelegate *)[[UIApplication sharedA ...

  3. 用Jquery控制文本框只能输入数字和字母

    用Jquery控制文本框只能输入数字和字母 $.fn.onlyNum = function () { $(this).keypress(function (event) { var eventObj ...

  4. SQL算术数字的默认类型

    select 100*100*100*100*100 --错误:将 expression 转换为数据类型 int 时出现算术溢出错误. select   cast(1000 as  bigint) * ...

  5. IOS5基础教程之一-----如何创建XCode项目

    一.IOS的基础知识 1.只有一个应用程序正在运行.在IOS上,每一段时间内只能激活一个应用程序并在屏幕上显示. 2.只有一个窗口.只允许应用程序操作的一个窗口. 3.访问受限.只能在IOS为应用程序 ...

  6. symfony中twig的流程控制if,for用法

    流程控制 if 语句 if语句在twig中的作用如同if语句在PHP中的一样.1.你可以通过下面这个简单的例子来判断表达式的结果是否正确. {% if online == false %} <p ...

  7. ecshop后台增加栏目查询会员是否重复注册

    ecshop的后台要查询哪些会员是否有重复注册时,可以利用特定的栏目来判断~ 譬如会员电话... 修改前请务必先备份下列档案!!! admin/users.php admin/templates/us ...

  8. Linux学习之八——利用变量

    一.变量的使用 用$放在变量前面进行使用,例如: echo $PATH 为了和别的字符隔开,可以用{}和"",例如 echo ${PATH}nic echo "$PATH ...

  9. Java学习之路(七)

    1:什么是异常?  中断了正常指令流的事件. 异常是一个对象 ,在出现异常时,虚拟机会生成一个异常对象 生成对象的类是由 JDK 提供的

  10. Windows上Python2.7安装Scrapy过程

    需要执行: pip install scrapy pip install requests 在Windows下用pip安装Scrapy报如下错误,看错误提示就知道去http://aka.ms/vcpy ...