rushcheyo -《转置原理及其应用》学习整理.
由于本人学艺不精,这里仅从比较粗浅的角度记录一些应用.
多点求值新科技
给定一个 n 次多项式 F(x) 和 m 个数 ai ,需要求出每个 F(ai) 的值.
定义减法卷积 MULT(F(x),G(x))=∑i≥0(∑j≥0fi+jgj)xi ,可以将一个多项式取反后再卷积来实现.
有 F(ai)=[x0]MULT(F(x),11−aix) .
且
MULT(F(x),G(x)H(x))=MULT(MULT(F(x),G(x)),H(x))
分治地来求每个 F(ai) .
G(l,r,x):=MULT(F(x),1∏ri=l(1−aix))modxr−l+1G(l,mid,x)=MULT(G(l,r,x),r∏i=mid+1(1−aix))modxmid−l+1G(mid+1,r,x)=MULT(G(l,r,x),mid∏i=l(1−aix))modxr−mid
每个要用到的 ∏ri=l(1−aix) 可以用分治 NTT 预处理出来,时间复杂度 O(nlog2n) .
例题
真实无妄她们的人生之路
有 n 件物品,第 i 件物品有属性 0≤pi≤1 .
主人公等级初始为 0 ,使用第 i 件物品会有 pi 的概率让等级加 1 , 1−pi 的概率不变.
若最后等级为 j ,则会产生 aj 的攻击力.
令 f(i) 表示使用除 i 外的 n−1 个物品后,主人公产生的期望攻击力,需要求出 f(1),f(2)…f(n) .
1≤n≤105 ,答案对 998244353 取模.Source : Comet OJ #2 F
设位置 i 的多项式 Fi(x)=pix+1−pi ,则 i 的答案就是多项式 ∏j≠iFj(x) 与 A(x)=∑iaixi 的点积.
我们知道点积可以表示成减法卷积结果的常数项,即 f(i)=[x0]MULT(A,∏j≠iFj) .
可以像做多点求值那样,由于减法卷积满足
MULT(F(x),G(x)H(x))=MULT(MULT(F(x),G(x)),H(x))
在分治时,向左儿子传入当前乘积与右儿子 ∏F 的减法卷积,向右儿子传入当前乘积与左儿子 ∏F 的减法卷积.
时间复杂度 O(nlog2n) .
Related Issues not found
Please contact @jkloverdcoi to initialize the comment