luogu嘟嘟嘟




这题刚开始特别容易理解错:直接枚举所有\(n + 1\)种情况,然后算哪一种情况合法,再统计答案。

上述思想的问题就在于我们从已知的结果出发,默认这种每一种情况中取出\(q\)个红球,\(p -q\)个蓝球的概率是1,但实际上无法保证取出的红球或是蓝球的数量刚好是这些。

那应该是啥咧,设袋中红球数量是\(i\),则蓝球就是\(n - i\),那么这种取法的概率是\(\frac{C_{i} ^ {q} * C_{n - i} ^ {p - q}}{C_{n} ^ {p}}\),记为\(p1(i)\)。

在这个条件下,我们再乘以\((i - q) / (n - p)\),才是再取一个球是红球的概率,记为\(p2(i)\)。

如果直接输出\(\sum p2(i)\),那表示的是取出\(p\)个球是任意球的情况下的概率,所以根据条件概率公式,我们应该再除以一个上面的\(\sum p1(i)\)。




还有一个问题,组合数太大,又没有取模。这里有一个trick,就是观察到算出来的概率很小(小于1),因此我们算组合数的时候都取一个log,然后算答案的时候再乘方回来就妥了。




(其实这题可以\(O(1)\)做,答案是\(\frac{q + 1}{p + 2}\),但这个我实在推不出来)

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
#include<assert.h>
using namespace std;
#define enter puts("")
#define space putchar(' ')
#define Mem(a, x) memset(a, x, sizeof(a))
#define In inline
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-8;
const int maxn = 1e5 + 5;
In ll read()
{
ll ans = 0;
char ch = getchar(), last = ' ';
while(!isdigit(ch)) last = ch, ch = getchar();
while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
if(last == '-') ans = -ans;
return ans;
}
In void write(ll x)
{
if(x < 0) x = -x, putchar('-');
if(x >= 10) write(x / 10);
putchar(x % 10 + '0');
}
In void MYFILE()
{
#ifndef mrclr
freopen(".in", "r", stdin);
freopen(".out", "w", stdout);
#endif
} int n, p, q;
int a[maxn], b[maxn]; db f[maxn];
In db logC(int n, int m) {return f[n] - f[m] - f[n - m];} int main()
{
//MYFILE();
int T = 0;
for(int i = 1; i < maxn; ++i) f[i] = f[i - 1] + log(1.0 * i);
while(scanf("%d%d%d", &n, &p, &q) != EOF)
{
db a = 0, b = 0;
for(int i = q; i <= n - p + q; ++i)
{
int j = n - i;
db tp1 = exp(logC(i, q) + logC(n - i, p - q) - logC(n, p));
db tp2 = (i * 1.0 - q) / (n - p);
a += tp1 * tp2, b += tp1;
}
printf("Case %d: %.4lf\n", ++T, a / b);
// printf("%.4lf\n", (q + 1.0) / (p + 2));
}
return 0;
}

HDU4254 A Famous Game的更多相关文章

  1. 各种trick和细节错误汇总

    这篇博客主要是用来记自己写代码的时候犯的各种小技巧和低级失误,好提醒自己,从而尽量缩短debug时间. 点分治 1.求每一个子树到重心的距离的函数接口应该是dfs2(v, eg, e[i].w)而不是 ...

  2. ubuntu kylin 14.04安装Node.js和Famous

    默认使用软件中心安装node.js,然后参考https://famo.us/install进行安装 1.sudo apt-get install git 2.npm install -g yo gru ...

  3. Reading Famous blog to prevent me wasting time on blind wandering

    I can`t help surfing the useless bbs and some other kind of SNS. The time I begin to do it, it costs ...

  4. HDU 4251 The Famous ICPC Team Again 主席树

    The Famous ICPC Team Again Problem Description   When Mr. B, Mr. G and Mr. M were preparing for the ...

  5. ACM The Famous Clock

    The Famous Clock 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Mr. B, Mr. G and Mr. M are now in Warsaw, ...

  6. hdu 4255 A Famous Grid

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4255 A Famous Grid Description Mr. B has recently dis ...

  7. 07-语言入门-07-A Famous Music Composer

    题目地址: http://blog.csdn.net/sevenmit/article/details/8231994  描述 Mr. B is a famous music composer. On ...

  8. A Famous Music Composer

    描述 Mr. B is a famous music composer. One of his most famous work was his set of preludes. These 24 p ...

  9. HDOJ 4252 A Famous City 单调栈

    单调栈: 维护一个单调栈 A Famous City Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

随机推荐

  1. CH01基于Ubuntu系统的ZYNQ-7000开发环境的搭建

    1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx 2017.4 实验内容: 国内Window ...

  2. stm32f103re stop模式下降低功耗

    一端口设置1.将N.C的GPIO统一配置为GPIO_Mode_AIN: 2.检查输入引脚,按照不工作时候的状态相应配置为  IPD/IPU,即避免在内部上/下拉电阻上消耗电流,而且该电流理论值为VCC ...

  3. 应用编排服务之ELK技术栈示例模板详解

    日志对互联网应用的运维尤为重要,它可以帮助我们了解服务的运行状态.了解数据流量来源甚至可以帮助我们分析用户的行为等.当进行故障排查时,我们希望能够快速的进行日志查询和过滤,以便精准的定位并解决问题. ...

  4. vue-cli3+mand-mobile svg 配置

    // vue.config.js chainWebpack: config => { config.resolve.alias // key,value自行定义,比如.set('@assets' ...

  5. MQ与logstash实现ES与数据库同步区别

    Logstash 实现ES 与数据库同步: 使用定时器(使用sql 定时的去查询数据进行同步).实现方式比较简单. MQ 实现 ES 与数据库同步: 实时性,消息放到MQ中,消费者会自动的消费,复杂性 ...

  6. C#汉字转换成全拼的拼音

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 转 实现类似QQ的窗体停靠

    [DllImport("User32.dll")] public static extern bool PtInRect(ref Rectangle Rects, Point lp ...

  8. 关于使用sublime的一些报错异常退出的解决方法

    1.我用Sublime Text 3,装了一些插件,现在一打开软件就提示plugin_host has exited unexpectedly,如下图 解决方案 :

  9. 动画 jquery-transit

    <script type="text/javascript" src="js/jquery.min.js"></script> < ...

  10. vue滚动分页加载以及监听事件处理

    <template> <div class="bodyContainer"> <div class="allContent" id ...