题解 P3802 【小魔女帕琪】
command_block
2018-12-29 17:51:50
~~这东西在任务计划里躺了三个月了。~~
来点严谨的!
看到期望题先别方,**大胆推一波柿子先**。
在前7次就触发一个"七重奏"的概率不算难求。
想象一个七元排列$\{p_1,p_2,p_3,p_4,p_5,p_6,p_7\}$
指第$p_1$次触发魔法1,$p_2$次触发魔法2,等等。
显然,$p$的具体值并不影响事件的期望。
假定排列为$\{1,2,3,4,5,6,7\}$好了~~(草率)~~
设$N=a_1+a_2+a_3+a_4+a_5+a_6+a_7$
这个东西成立的概率是$\large{a_1/N*a_2/(N-1)*a_3/(N-2)...a_7/(N-6)}$
因为在取魔法1的时候有$\large{a_1/N}$的概率,在此条件下取魔法2又有$\large{a_2/(N-1)}$(N减少了1)
当然七元排列有$7!$个。
所以在第7次就触发一个"七重奏"的概率是$\large{7!*a_1/N*a_2/(N-1)*a_3/(N-2)...a_7/(N-6)}$
接下来考虑在第8次触发一个"七重奏"的概率。
首先要知道,魔法发动互不影响。
相当于你在胡乱用掉一个晶体后重头再来。
也就是$(a_1/N)(7!*(a_1-1)/(N-1)*a_2/(N-2)*a_3/(N-3)...a_7/(N-7))+$
$(a_2/N)(7!*a_1/(N-1)*(a_2-1)/(N-2)*a_3/(N-3)...a_7/(N-7))+$
$……$
$(a_7/N)(7!*a_1/(N-1)*a_2/(N-2)*a_3/(N-3)...(a_7-1)/(N-7))+$
设$∏a_i=R$
也就是
$=7!/N/(N-1)/(N-2)/.../(N-7)*((a_1-1)R+(a_2-1)R+...+(a_7-1)R)$
$=7!/N/(N-1)/(N-2)/.../(N-7)*(N-7)R$
$=7!/N/(N-1)/(N-2)/.../(N-6)*R$
$=7!*a_1/N*a_2/(N-1)*a_3/(N-2)...a_7/(N-6)$
也就是“在第8次触发一个七重奏的概率”与“所以在第7次就触发一个七重奏的概率”相等。
同理“在第任意次触发一个七重奏的概率”与“所以在第7次就触发一个七重奏的概率”相等
这就好办了,直接$(N-6)*7!*a_1/N*a_2/(N-1)*a_3/(N-2)...a_7/(N-6)$
最后注意卡精度。
Code:
```cpp
#include<cstdio>
using namespace std;
double a[10],N,ans=1;
int main()
{
for(int i=1;i<=7;i++){
scanf("%lf",&a[i]);
N+=a[i];
}if (N<7){
printf("0.000");
return 0;
}for(int i=1;i<=7;i++)
ans=ans*a[i]/(N-i+1);
printf("%.3lf\n",ans*1*2*3*4*5*6*7*(N-6));
return 0;
}
```