CF947E

题意

有一个非负整数(x)。你要执行(m)次操作,每次操作是(x = randint(0, x)) ( randint(0, x)均匀随机地在([0,x])中取一个整数)。
现在已知初始的(x)会随机在([0,n])取值,且取(i)的概率是(p_i),求最后取到([0,n])每个数的概率。
(nle 10^5,mle 10^{18})

做法

令当前取到(i)的概率为(f_i),一轮后为(f^*_i),有

[f^*_i=sum_{j=i}^nfrac{f_j}{j+1} ]

(F(x))(f)的生成函数,有:

[egin{aligned} F^*(x)&=sum_{i=0}^nx^isum_{j=0}^nfrac{f_j}{j+1}\ &=sum_{j=0}^nfrac{f_j}{j+1}sum_{i=0}^j x^i\ &=sum_{j=0}^nfrac{f_j}{j+1}frac{x^{j+1}-1}{x-1}\ &=frac1{x-1}sum_{j=0}^n f_jint_1^x t^j{ m d}t\ &=frac{int_1^x F(t){ m d}t}{x-1} end{aligned}]

(G(x)=F(x+1)),有

[G^*(x)=F^*(x+1)=frac{int_1^{x+1}F(t){ m d}t}{x+1-1}=frac{int_0^x G(t){ m d}t}x ]

(m)次后为(g^*_i=frac{g_i}{(i+1)^m})
由于

[sum_{i=0}^ng_ix^i=sum_{j=0}^nf_j(x+1)^j=sum_{j=0}^nf_jsum_{i=0}^j{jchoose i}x^i ]

[g_i=sum_{j=i}^n{jchoose i}f_j,f_i=sum_{j=i}^n (-1)^{j-i}{jchoose i}g_j ]

原文地址:https://www.cnblogs.com/Grice/p/12952767.html