洛谷 P3802 小魔女帕琪【期望】


题目:

洛谷原题传送门


题意:

7 7 7种元素,每个元素最多释放 a i a_i ai次,求能放出所有元素的期望


分析:

我们先从一般情况入手,对前 7 7 7次释放能放出七重奏的期望进行分析
S u m Sum Sum ∑ i = 1 7 a i \sum_{i=1}^7a_i i=17ai
那如果是按照 1 1 1再到 2 2 2再到 3 3 3一直升序到 7 7 7,则期望为
a 1 S u m ∗ a 2 S u m − 1 ∗ a 3 S u m − 2 ∗ … … ∗ a 7 S u m − 6 \frac{a_1}{Sum}*\frac{a_2}{Sum-1}*\frac{a_3}{Sum-2}*……*\frac{a_7}{Sum-6} Suma1Sum1a2Sum2a3Sum6a7
但是如果我们不是按照这样的顺序呢
我们设 b b b序列为 a a a序列的复制,只是 b i b_i bi可以表示 a 任 意 a_{任意} a并且 b b b中的数不会重复
我们对上面的式子进行化简得到:
b 1 ∗ b 2 ∗ b 3 ∗ … … ∗ b 7 S u m ∗ ( S u m − 1 ) ∗ ( S u m − 2 ) ∗ ( S u m − 3 ) … … \frac{b_1*b_2*b_3*……*b_7}{Sum*(Sum-1)*(Sum-2)*(Sum-3)……} Sum(Sum1)(Sum2)(Sum3)b1b2b3b7
这样我们就惊奇的发现:顺序并不会影响到我们前 7 7 7次的释放结果
所以我们前 7 7 7次释放不考虑顺序的期望为
7 ! ∗ a 1 S u m ∗ a 2 S u m − 1 ∗ a 3 S u m − 2 ∗ … … ∗ a 7 S u m − 6 7!*\frac{a_1}{Sum}*\frac{a_2}{Sum-1}*\frac{a_3}{Sum-2}*……*\frac{a_7}{Sum-6} 7!Suma1Sum1a2Sum2a3Sum6a7
那么我们对原问题进行更深的分析
首先,我们思考下一个神奇的问题:假如有一天老师给了你们班一次和校花吃饭的机会,但只有一个人能享有如此机遇,所以老师拿了个箱子出来,里面有 1 1 1个红球, 29 29 29个白球(你们班一共有 30 30 30人)。那么对于先去抽的人和后去抽的人是公平的吗


当然是公平的啦
第一个的期望是 1 30 \frac{1}{30} 301,第二个的期望是 29 30 ∗ 1 29 \frac{29}{30}*\frac{1}{29} 3029291,第三个的期望是 29 30 ∗ 28 29 ∗ 1 28 … … \frac{29}{30}*\frac{28}{29}*\frac{1}{28}…… 30292928281
所以顺序不会影响我们期望的结果,这也是我们一开始假设前 7 7 7次释放的魔法都不同合法的原因
再让我们回到对问题的分析上,我们第 8 8 8次释放的魔法一定是之前中的任意一个,所以用公式表达出来就是 a i − 1 S u m − 7 \frac{ai-1}{Sum-7} Sum7ai1
因为一共有 7 7 7种情况,所以表示出来为 ∑ i = 1 7 a i − 1 S u m − 7 \sum_{i=1}^7\frac{ai-1}{Sum-7} i=17Sum7ai1
如此一来,将求和式子化简后发现结果就等于 1 1 1,即对答案的贡献仍然是
7 ! ∗ a 1 S u m ∗ a 2 S u m − 1 ∗ a 3 S u m − 2 ∗ … … ∗ a 7 S u m − 6 7!*\frac{a_1}{Sum}*\frac{a_2}{Sum-1}*\frac{a_3}{Sum-2}*……*\frac{a_7}{Sum-6} 7!Suma1Sum1a2Sum2a3Sum6a7
再往后面的位置,贡献都是如此,可自行证明
但是因为有最后的 6 6 6个位置不足 7 7 7个,所以我们最终的期望结果为
( S u m − 6 ) ∗ 7 ! ∗ a 1 S u m ∗ a 2 S u m − 1 ∗ a 3 S u m − 2 ∗ … … ∗ a 7 S u m − 6 (Sum-6)*7!*\frac{a_1}{Sum}*\frac{a_2}{Sum-1}*\frac{a_3}{Sum-2}*……*\frac{a_7}{Sum-6} (Sum6)7!Suma1Sum1a2Sum2a3Sum6a7

7 ! ∗ a 1 S u m ∗ a 2 S u m − 1 ∗ … … ∗ a 6 S u m − 5 ∗ a 7 7!*\frac{a_1}{Sum}*\frac{a_2}{Sum-1}*……*\frac{a_6}{Sum-5}*a_7 7!Suma1Sum1a2Sum5a6a7


代码:

// luogu-judger-enable-o2
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define LZX ILU
using namespace std;
inline LL read() {
    LL d=0,f=1;char s=getchar();
    while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
    while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
    return d*f;
}
int a[10];
int main()
{
    double ans=1.0;
    int s=0;
    for(int i=1;i<=7;i++) a[i]=read(),s+=a[i],ans*=(double)i;
    for(int i=1;i<7;i++) ans*=(double)a[i]/(s-i+1);
    printf("%.3lf",ans*a[7]);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值