Educational Codeforces Round 79 D - Santa's Bot(概率计算)

⛄ ⛄ ⛄

以前居然没写过这种类型的题,现场题都读不懂,,哭了

题意:有n个孩子,每个孩子有k[ i ]件想要的,现在随机挑一个孩子,从他想要的礼物里面随机挑一个,然后送给另一个孩子,问你送的这个礼物在后一个孩子愿望单里的概率

假设我们现在挑出来一个孩子x,挑出他的概率为1/n,从他的愿望单里选一个礼物,概率变为1/n * 1/k[ x ],再挑一个孩子并且符合的概率:1/n * 1/k[ x ] * cnt[该礼物]/n ;

#define  mod 998244353
///快速幂m^k%mod
ll qpow(int m, int k)
{
    ll res=1, t=m;
    while (k)
    {
        if(k&1) res = res * t % mod;
        t = t * t % mod;
        k >>= 1;
    }
    return res;
}
// 快速幂求逆元
int Fermat(int a,int p)//费马求a关于b的逆元
{
    return qpow(a,p-2);
}
int cnt[MAXN],k[MAXN];
vector<int>a[MAXN];
int main()
{
    fast;
    int n;cin>>n;
    rep(i,n)
    {
        cin>>k[i];
        a[i].resize(k[i]);
        rep(j,k[i]) cin>>a[i][j],++cnt[a[i][j]];//记录想要该礼物的人数
    }
    ll ans=0;
    rep(i,n)
    {
        ll cur=0;
        rep(j,k[i]) cur+=cnt[a[i][j]];
        ans+=((cur%mod)*Fermat(k[i],mod))%mod;
    }
    ans=((ans%mod)*Fermat((1ll*n*n)%mod,mod))%mod;
    cout<<ans<<endl;
    //stop;
    return 0;
}
发布了111 篇原创文章 · 获赞 1 · 访问量 2139
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 像素格子 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览