[洛谷P3802] 小魔女帕琪

[洛谷P3802] 小魔女帕琪

一.前言

​ 这个8元素魔法体系还让机房同学们讨论了一会是东西方修真、魔法体系的区别hhh,最后还丧心病狂地压了行?

题目链接放这里

二.思路

​ 首先数学期望都给你A到脸上来了,考点很明确。按照一般的思路,\(E=\sum p_i*a_i\),以及递推的做法,我们不妨设\(f[i]\) 表示以 i 结尾产生七魔法的期望。

​ 那么很显然的,只有从 \(f[7]\) 开始才有值,这还是欧皇属性,那么可以轻松的算出 \(f[7]\) .首先来一个基本款(注意是+=,这里计算的是概率,出现次数 \(a_i\) 默认1不写,基本的乘法原理,并且有\(n=\sum a_i\))。

\[f[7]+=\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} \]

那么很显然的,再举一个基本款

\[f[7]+=\frac{a_2}{n}*\frac{a_1}{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} \]

其实到这里很多人都看的出来了,对于\(f[7]+=p_i\)这样的式子,所有的 \(p_i\) 都是相同的,(毕竟分母分子乘积都不变),不妨令此时的 \(p_i\)\(p\) ,那么其实 p 就是在头七个扔出一个固定顺序的七魔法的概率,那么这样的固定顺序出现次数即为7的排列 7!,所以 \(f[7]=7!*p\).也可以理解为乘法分配率,将乘上的\(a_i=1\)累加为 7!

​ 其实上面说了那么多有点废话的感觉哈,接下来才是重头戏。

​ 我们试图将求出 \(f[7]\) 的做法推广到 \(f[8]\) ,那么很显然的,我们需要先保证 \(2-8\) 位置的七魔法生效,至于1号位上是什么魔法无所谓。由于先选后选对 \(f[8]\) 没有影响,所以先把 \(2-8\) 位置上的选了,再选 1 ,很显然的第一步(选 2-8)的期望=p,那么对于剩下的1号位考虑,则是在 7种魔法中选一种出来为 \(f[8]+=p*\dfrac{a_x-1}{n-7}\),对于2-8的任意排列,1号位的选择都有7种,所以选出一个排列后,\(f[8]+=p*\sum \dfrac{a_x-1}{n-7}\),后面一项显然为1,即等价于没出现一个新的排列 \(f[8]+=p\) ,排列数有 7! 种,所以 \(f[8]=7!*p=f[7]\)

​ 其实第二部分选择的可以不受魔法种类的约束,换而言之,对于 \(f[i]\) 来说,先选出 i-6~i 这七个魔法,然后第二步选出在剩下的n-7个魔法中选出 i-7 个魔法,即对于第一步的每个排列,有 \(f[i]+=p*\dfrac{n-7}{n-7}*\dfrac{n-8}{n-8}*……\),由于排列数有7! 个,所以 \(f[i]=p*7!=f[7]\)

​ 所以

\[\begin{align} ans&=\sum_{i=7}^nf[i]=f[7]*(n-7+1)\\&=7!*p*(n-6)\\&=7!*\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}*(n-6)\\&=7!*\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}*a_7 \end{align} \]

求出ans就好了

三.CODE

#include<bits/stdc++.h>
double a[10],ans=7.0*6*5*4*3*2*1,sum;
int main(){
	for(int i=1;i<=7;++i)std::cin>>a[i],sum+=a[i]*1.0;
	for(int i=1;i<=7&&sum+1-i!=0;++i)ans*=1.0*a[i]/(sum+1-i);
	printf("%.3lf",ans*(sum-6));
	return 0;
}
posted @ 2020-07-28 09:36  clockwhite  阅读(160)  评论(0编辑  收藏  举报