定义每个操作的成功率为p[i],注意p[0]=p[n+1]=0,后面会涉及这个边界
定义前缀积prod:
prodn=i=1∏npi
定义fi,j,表示第i位以j个1结尾的概率,那么易得:
fi,j=⎩⎨⎧0 i<jfi−1,j−1⋅pi i≥j且j>01−pi i≥j且j=0
那么显然答案为:
ANS=i=1∑n(1−pi+1)j=1∑ifi,j∗jk
考虑写出fi,j的通项:
注意到对于一般的f,例如f6,3,它可以写成:
f6,3=f5,2⋅p6=f4,1⋅p5⋅p6=f3,0⋅p4⋅p5⋅p6=(1−p3)⋅p4⋅p5⋅p6
能感受到其通项为:
fi,j=(1−pi−j)k=i−j+1∏ipk (i>=j)
利用前缀积可得:
fi,j=(1−pi−j)prodi−jprodi (i>=j)
那么将ANS转化为
ANS=i=1∑n(1−pi+1)j=1∑i(1−pi−j)prodi−jprodi⋅jk
将prodi提至第一个∑后,可转换为卷积形式:
ANS=i=1∑n(1−pi+1)⋅prodij=1∑iprodi−j1−pi−j⋅jk
设:
A[i]=i≥0∑prod[i]1−p[i]xiB[i]=i≥1∑ikxi
故:
ANS=i=1∑n(1−pi+1)⋅prodi⋅[xi](A∗B)
总复杂度O(nlogn),瓶颈在NTT和快速幂,比原dp的解法的优势是:对k的取值是任意的,但是需要在取模意义下(故无法通过本题的浮点版本,因为前缀积在浮点意义下太容易变成0)