竞赛讨论区 > G题题解
头像
不懂qwq
编辑于 01-15 14:40
+ 关注

G题题解

这题可以直接按照传统概统的方法,求出密度函数,然后利用期望的定义求,但是求出来似乎有点麻烦,我们可以利用求期望的一个结论:对于非负的连续性随机变量,设为其分布函数,则

证明方法也很简单,就是简单的二重积分交换次序,参考链接

这里设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) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐