1. 程式人生 > 實用技巧 >【洛谷P3802】小魔女帕琪 題解(概率期望)

【洛谷P3802】小魔女帕琪 題解(概率期望)

前言:蒟蒻太弱了,不會推式子QAQ

--------------------

題目連結

題目大意:給定$7$種能量晶體各$a_i$個,每次隨機摸到一個晶體,如果連續摸到$7$個不同的晶體就會觸發一次傷害。問觸發傷害次數的期望。

推一波式子。

設$N=\sum \limits_{i=1}^7 a_i$

考慮前7個觸發傷害的概率:$p=\frac{a_1}{N}*\frac{a_2}{N-1}*\frac{a_3}{N-2}*\frac{a_4}{N-3}*\frac{a_5}{N-4}*\frac{a_6}{N-5}*\frac{a_7}{N-6}$

我們發現,不論我們取得順序是怎樣的,其分子和分母都不變。所以對答案的總貢獻是$p*7!$。

同樣,在前$N-6$個位置都有機會觸發傷害,所以答案就是$(N-6)*7!*p$。

如果$N<7$的話,根本構不成傷害,直接輸出$0.000$。

程式碼:

#include<bits/stdc++.h>
using namespace std;
int a[8],sum;
double ans=1.0;
int main()
{
    for (int i=1;i<=7;i++) cin>>a[i],sum+=a[i];
    if (sum<7){
        printf("0.000");
        return 0;
    }
    for (int
i=1;i<=7;i++) ans=ans*(double)a[i]/(double)(sum-i+1); printf("%.3lf",ans*1.0*2.0*3.0*4.0*5.0*6.0*7.0*(double)(sum-6)); return 0; }