ARC150D Removing Gacha 题解
Coffee_zzz · · 题解
显然总期望操作次数等于每个点期望操作次数之和,于是考虑对于每个点
设点
于是现在问题转化为了,有
设当前已经选择了
将所有点期望操作次数相加,得到答案为
const int N=2e5+5,mod=998244353;
int n,p[N],d[N],ans,fac[N],infac[N],inv[N],pre[N];
int ksm(int a,int b){
int res=1;
while(b){
if(b&1) res=1ll*res*a%mod;
b>>=1,a=1ll*a*a%mod;
}
return res;
}
void solve(){
cin>>n;
for(int i=2;i<=n;i++) cin>>p[i];
fac[0]=infac[0]=1;
for(int i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mod;
infac[n]=ksm(fac[n],mod-2);
for(int i=n-1;i>0;i--) infac[i]=1ll*infac[i+1]*(i+1)%mod;
for(int i=1;i<=n;i++) inv[i]=1ll*fac[i-1]*infac[i]%mod;
for(int i=1;i<=n;i++) pre[i]=(pre[i-1]+inv[i])%mod;
for(int i=1;i<=n;i++) d[i]=d[p[i]]+1,ans=(ans+pre[d[i]])%mod;
cout<<ans<<endl;
}