这题可以直接按照传统概统的方法,求出密度函数,然后利用期望的定义求,但是求出来似乎有点麻烦,我们可以利用求期望的一个结论:对于非负的连续性随机变量,设为其分布函数,则
证明方法也很简单,就是简单的二重积分交换次序,参考链接
这里设n个随机变量分别为,则令,我们的目标就是求的期望
显然
因此答案就是
这里积分上限取是因为最早发生的事件一定不可能超过这个值。
我们可以直接包算出被积函数(一个次多项式)的前面的系数,然后直接对每一项积分求和即可。
代码:
void solve()
{
int n,m=1;
cin >> n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)m*=qmi(a[i],mod-2),m%=mod;
int mn=*min_element(a+1,a+1+n);
vector<int>c(n+10);
c[0]=1;//多项式系数
for(int i=1;i<=n;i++){
vector<int>t(n+10);
t[0]=c[0]*a[i]%mod;;
for(int j=1;j<i;j++)t[j]=((c[j]*a[i]-c[j-1])%mod+mod)%mod;
t[i]=-c[i-1];
t[i]=(t[i]%mod+mod)%mod;
c=t;
}
int res=0;
for(int i=0;i<=n;i++)res+=c[i]*qmi(mn,i+1)%mod*qmi(i+1,mod-2)%mod,res%=mod;
res*=m,res%=mod;
cout<<res<<endl;
}
全部评论
(1) 回帖