题意简述
一个长度为$n<=1e5$的序列,支持两种操作:
- 等概率随机打乱区间$[l,r]$
- 求区间$[l,r]$和的期望值
所有结果(珂能是分数形式)都对$998244353$取膜。
思路
打乱区间$[l,r]$相当于把$l,r$中的数都变成$a[l…r]$的平均值。线段树,区间覆盖区间求和,即珂。
具体思路
为什么这个思路是对的?
随机打乱区间$l,r$,对于$[l,r]$中的某一个数$x$,因为是等概率随机打乱,所以它出现在每一个位置的概率都是相等的,都是$\dfrac{1}{r-l+1}$。所以,$[l,r]$被打乱之后,每个位置的期望都是相等的,它都等于$a[l…r]$的平均值。
那至少区间不重叠的时候,这个算法就正确了。
那么如果我们的区间有重叠怎么办呢?重叠了还正确么?
我们先明确一下期望的概念:$E(x)$表示$x$的期望值,其中$x$是随机变量,而$E(x)$是一个确定的数,表示$x$的期望。
而我们知道,$E(C)=C$,也就是“常数的期望等于本身”。所以$E(E(x))=E(x)$,换句话说,期望套几层都是不变的。
所以我们在期望的基础上求期望,求“期望的期望”,求出来的还是“期望”,不是别的。
所以答案就是正确的了。膜数有点大,记得开$long long$。
代码
1 |
|