题解 P3802 【小魔女帕琪】

command_block

2018-12-29 17:51:50

Solution

~~这东西在任务计划里躺了三个月了。~~ 来点严谨的! 看到期望题先别方,**大胆推一波柿子先**。 在前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; } ```