菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
187
0

杂题

原创
05/13 14:22
阅读数 57662

题意

给定\(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}\times D_i)\)
\(x_i=(p_i+D_i-p_i\times D_i)x_{i-1}+A_i\times D_i\),发现这是个一次函数的形式
\(F_i=k_ix+b_i\),其中\(k_i=p_i+D_i-p_i\times D_i,b_i=A_i\times D_i\)
则对于一个随机的排列,最后的值为\(F_{p_n}(F_{p_{n-1}}(\cdots(F_{p_2}(F_{p_1}(0)))))\)

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

发表评论

0/200
187 点赞
0 评论
收藏
为你推荐 换一批