【学习笔记】[AGC038E] Gachapon

学好数学

首先 min-max \text{min-max} min-max容斥: E ( max ⁡ ( S ) ) = ∑ T ⊆ S ( − 1 ) ∣ T ∣ + 1 E ( min ⁡ ( T ) ) E(\max(S))=\sum_{T\subseteq S}(-1)^{|T|+1}E(\min(T)) E(max(S))=TS(1)T+1E(min(T))

考虑枚举集合 T T T,假设每次得到的都是 T T T里面的数,其期望可以转化为 K K K轮后仍没有卡牌被抽到的概率之和。注意到每一轮后都会得到一张卡牌,因此是有限项求和。注意到 ∑ A i \sum A_i Ai比较小,可以考虑暴力枚举轮数来计算。

具体的,答案是 ∏ i ∈ T ( A i ∑ A i ) c i K ! c 1 ! c 2 ! . . . c ∣ T ∣ ! \prod_{i\in T}(\frac{A_i}{\sum A_i})^{c_i}\frac{K!}{c_1!c_2!...c_{|T|}!} iT(AiAi)cic1!c2!...cT!K!

其中 ∑ c i = K , c i < b i \sum c_i=K,c_i<b_i ci=K,ci<bi

不难将式子写成 K ! ( 1 ∑ A i ) K ∏ i ∈ T A i c i c i ! K!(\frac{1}{\sum A_i})^K\prod_{i\in T}\frac{A_i^{c_i}}{c_i!} K!(Ai1)KiTci!Aici

f j , k f_{j,k} fj,k表示 ∑ A i = j \sum A_i=j Ai=j ∑ c i = k \sum c_i=k ci=k时贡献之和。每次考虑新加入一个元素进去,这个元素的贡献是 A i c i c i ! \frac{A_i^{c_i}}{c_i!} ci!Aici,写成卷积的形式 f j , k = ∑ f j − A i , k − c i A i c i c i ! f_{j,k}=\sum f_{j-A_i,k-c_i}\frac{A_i^{c_i}}{c_i!} fj,k=fjAi,kcici!Aici,不难暴力卷积做到 O ( ∑ A i ( ∑ B i ) 2 ) O(\sum A_i(\sum B_i)^2) O(Ai(Bi)2)

#include<bits/stdc++.h> #define ll long long #define inf 0x3f3f3f3f using namespace std; const int mod=998244353; int n,a[405],b[405]; ll f[405][405],fac[405],inv[405],res; ll fpow(ll x,ll y=mod-2){ ll z(1); for(;y;y>>=1){ if(y&1)z=z*x%mod; x=x*x%mod; }return z; } void add(ll &x,ll y){ x=(x+y)%mod; } void init(int n){ fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod; inv[n]=fpow(fac[n]);for(int i=n;i>=1;i--)inv[i-1]=inv[i]*i%mod; } signed main(){ cin>>n,init(400);for(int i=1;i<=n;i++)cin>>a[i]>>b[i]; f[0][0]=-1;int s1=0,s2=0; for(int i=1;i<=n;i++){ for(int j=s1;j>=0;j--){ for(int k=0;k<=s2;k++){ ll M=1; for(int l=0;l<b[i];l++){ add(f[j+a[i]][k+l],-f[j][k]*M%mod*inv[l]%mod); M=M*a[i]%mod; } } }s1+=a[i],s2+=b[i]; } for(int i=1;i<=s1;i++){ ll M=fpow(i); for(int j=0;j<=s2;j++){ res=(res+fac[j]*M%mod*s1%mod*f[i][j]%mod)%mod; M=M*fpow(i)%mod; } }cout<<(res+mod)%mod; }

__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530042.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2022-01-29 树上斜率优化
点击右上角即可分享
微信分享提示