题意:有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. 26、Oracle(二)

    1)掌握多行函数与分组操作 2)掌握多表查询与子查询 3)理解集合查询与掌握Oracle分页语法 4)理解创建.修改和删除表和表约束 --------------------------------- ...

  2. C#的OpenFileDialog和SaveFileDialog的常见用法(转)

    OpenFileDialog openFileDialog1 = new OpenFileDialog();            openFileDialog1.InitialDirectory = ...

  3. easyrtc-server在ubuntu14.04上的安装方法

    easyrtc 官网 http://easyrtc.com/ 1.安装nodejs,安装npm (不知道如何安装请google一下) 2. 查看运行easyrtc 所需要的js 包,在easyrtc ...

  4. HttpClient的使用方法

    使用httpClient发送请求.接收响应很简单.一般需要以下几个步骤. 第一:创建HttpClient对象: 第二:创建请求方法的实例,并指定请求URL.如果要发送GET请求,创建HttpGet对象 ...

  5. 将html table中的数据封装成json格式数据

    var tab=document.getElementById("table1");     var rows=tab.rows;     //alert(rows.length) ...

  6. poj1961 Period

    我们考虑KMP算法中fail失配指针的意义. 对于一个模式串(Pattern),位置i对应的失配指针fail[i]是那个位置: 这个位置满足的条件是,子串[0, fail[i])是位置i(不含)的后缀 ...

  7. RANSAC和Flitline

    [blog算法原理]RANSAC和FitLine ​ 如果已经有一系列图片,需要拟合出最为合适的一条直线出来,这个时候你会选择RANSAC还是FitLine. 一.算法定义: RANSAC是实际运用非 ...

  8. jquery的ajax向ashx传值,中文乱码问题

    从网上查找了很多资料: 有在配置文件里面加如下配置 <globalization responseEncoding="utf-8" requestEncoding=" ...

  9. JS实现base64编码与解码

    var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...

  10. 2016CCPC东北地区大学生程序设计竞赛 1008 HDU5929

    链接http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:给你一种数据结构以及操作,和一种位运算,最后询问:从'栈'顶到低的运算顺序结果是多少 解法:根据 ...