关于>3次方 的nlogn 做法
  • 板块P1654 OSU!
  • 楼主Yu_Xuaan
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/12 19:37
  • 上次更新2023/11/12 13:06:18
查看原帖
关于>3次方 的nlogn 做法
797687
Yu_Xuaan楼主2023/10/12 19:37

定义每个操作的成功率为p[i]p[i],注意p[0]=p[n+1]=0p[0]=p[n+1]=0,后面会涉及这个边界

定义前缀积prodprod:

prodn=∏i=1npiprod_n=\prod _{i=1}^n p_i

定义fi,jf_{i,j},表示第ii位以jj个1结尾的概率,那么易得:

fi,j={0                      i<jfi−1,j−1⋅pi     i≥j且j>01−pi              i≥j且j=0f_{i,j}= \begin{cases} 0~~~~~~~~~~~~~~~~~~~~~~i<j \\ f_{i-1,j-1}\cdot p_i~~~~~i\geq j 且 j>0\\ 1-p_i~~~~~~~~~~~~~~i\geq j 且 j=0 \\ \end{cases}

那么显然答案为:

ANS=∑i=1n(1−pi+1)∑j=1ifi,j∗jkANS=\sum_{i=1}^n (1-p_{i+1})\sum_{j=1}^i f_{i,j}*j^k

考虑写出fi,jf_{i,j}的通项:

注意到对于一般的ff,例如f6,3f_{6,3},它可以写成:

f6,3=f5,2⋅p6=f4,1⋅p5⋅p6=f3,0⋅p4⋅p5⋅p6=(1−p3)⋅p4⋅p5⋅p6f_{6,3}=f_{5,2}\cdot p_6\\ =f_{4,1}\cdot p_5 \cdot p_6 \\ =f_{3,0}\cdot p_4 \cdot p_5 \cdot p_6 \\ =(1-p_3)\cdot p_4 \cdot p_5 \cdot p_6 \\

能感受到其通项为:

fi,j=(1−pi−j)∏k=i−j+1ipk          (i>=j)f_{i,j}=(1-p_{i-j})\prod_{k=i-j+1}^i p_k ~~~~~~~~~~(i>=j)

利用前缀积可得:

fi,j=(1−pi−j)prodiprodi−j          (i>=j)f_{i,j}=(1-p_{i-j})\frac{prod_i}{prod_{i-j}}~~~~~~~~~~(i>=j)

那么将ANSANS转化为

ANS=∑i=1n(1−pi+1)∑j=1i(1−pi−j)prodiprodi−j⋅jkANS=\sum_{i=1}^{n}(1-p_{i+1})\sum_{j=1}^{i} (1-p_{i-j})\frac{prod_i}{prod_{i-j}}\cdot j^k

将prodiprod_i提至第一个∑\sum后,可转换为卷积形式:

ANS=∑i=1n(1−pi+1)⋅prodi∑j=1i1−pi−jprodi−j⋅jkANS=\sum_{i=1}^{n}(1-p_{i+1})\cdot prod_i\sum_{j=1}^{i} \frac{1-p_{i-j}}{prod_{i-j}}\cdot j^k \\

设:

A[i]=∑i≥01−p[i]prod[i]xiB[i]=∑i≥1ikxiA[i]=\sum_{i\geq0} \frac{1-p[i]}{prod[i]}x^i \\ B[i]=\sum_{i\geq1} i^kx^i \\

故:

ANS=∑i=1n(1−pi+1)⋅prodi⋅[xi](A∗B)ANS=\sum_{i=1}^{n}(1-p_{i+1})\cdot prod_i\cdot [x^i](A*B)

总复杂度O(nlogn)O(n logn),瓶颈在NTT和快速幂,比原dp的解法的优势是:对kk的取值是任意的,但是需要在取模意义下(故无法通过本题的浮点版本,因为前缀积在浮点意义下太容易变成0)

2023/10/12 19:37
加载中...