zoukankan      html  css  js  c++  java
  • 杂题

    题意

    给定(n)个操作,有一个初始变量(x=0)
    (i)次操作,有(p_i)的概率给(x)加上(A_i),有(1-p_i)的概率给(x)乘上(D_i)
    随机一个排列(p),按(p_1,p_2,cdots,p_n)的顺序依次执行操作,求(x)最后的期望

    做法

    若依次执行操作,令(x_i)为执行完前(i)次操作后的期望,有(x_i=p_i(x_{i-1}+A_i)+(1-p_i)(x_{i-1} imes D_i))
    (x_i=(p_i+D_i-p_i imes D_i)x_{i-1}+A_i imes D_i),发现这是个一次函数的形式
    (F_i=k_ix+b_i),其中(k_i=p_i+D_i-p_i imes D_i,b_i=A_i imes D_i)
    则对于一个随机的排列,最后的值为(F_{p_n}(F_{p_{n-1}}(cdots(F_{p_2}(F_{p_1}(0))))))

    根据期望的线性性,我们考虑每个(b_i)的贡献,即(prodlimits_{j=1,j eq i}^n(1+k_j))
    考虑算出(p_{n-i})(b_{p_{n-i}})的贡献,即((sumlimits_{l=1}^n b_l([x^i]prodlimits_{j=1,j eq i}^n(1+k_jx))) imes i! imes (n-i-1)!)
    用分治fft加速即可

  • 相关阅读:
    AutoLayout动画
    实现毛玻璃效果
    合并静态库
    GCDAsyncSocket~
    iOS下URL编码
    OC多线程之GCD ----- 2
    堆和栈的区别
    Effective Objective-C 2.0重读笔记---2
    Android手机端抓包方法
    Android APK反编译
  • 原文地址:https://www.cnblogs.com/Grice/p/13129834.html
Copyright © 2011-2022 走看看