• [洛谷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])

    ​ 所以

    [egin{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;
    }
    
  • 相关阅读:
    SpringBoot+CXF下Https调用webservice跳过安全证书的配置
    程序员的长安十二时辰:Java实现从Google oauth2.0认证调用谷歌内部api
    springboot集成activiti6.0多数据源的配置
    activiti工作流委托功能的设计和实现
    vue.js带复选框表单的增删改查
    bootstrap-treeview后台Json数据的封装及前台的显示
    你好,Spring!
    超大份线程池,干杯,兄弟!陆
    嗯!这篇多线程不错!伍
    是兄弟!就来看这篇多线程!叁
  • 原文地址:https://www.cnblogs.com/clockwhite/p/13389295.html
Copyright © 2020-2023  润新知