题解 P3802 【小魔女帕琪】
command_block
·
·
题解
这东西在任务计划里躺了三个月了。
来点严谨的!
看到期望题先别方,大胆推一波柿子先。
在前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:
#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;
}