Processing math: 100%

转置原理及其应用

rushcheyo -《转置原理及其应用》学习整理.

由于本人学艺不精,这里仅从比较粗浅的角度记录一些应用.

原文链接

多点求值新科技

给定一个 n 次多项式 F(x)m 个数 ai ,需要求出每个 F(ai) 的值.

定义减法卷积 MULT(F(x),G(x))=i0(j0fi+jgj)xi ,可以将一个多项式取反后再卷积来实现.

F(ai)=[x0]MULT(F(x),11aix) .


MULT(F(x),G(x)H(x))=MULT(MULT(F(x),G(x)),H(x))

分治地来求每个 F(ai) .
G(l,r,x):=MULT(F(x),1ri=l(1aix))modxrl+1G(l,mid,x)=MULT(G(l,r,x),ri=mid+1(1aix))modxmidl+1G(mid+1,r,x)=MULT(G(l,r,x),midi=l(1aix))modxrmid

当递归到 l=r 时,此时的 G(l,r,x) 的常数项就是我们要求的点值了.

每个要用到的 ri=l(1aix) 可以用分治 NTT 预处理出来,时间复杂度 O(nlog2n) .

code

例题

真实无妄她们的人生之路

n 件物品,第 i 件物品有属性 0pi1 .
主人公等级初始为 0 ,使用第 i 件物品会有 pi 的概率让等级加 1 , 1pi 的概率不变.
若最后等级为 j ,则会产生 aj 的攻击力.
f(i) 表示使用除 i 外的 n1 个物品后,主人公产生的期望攻击力,需要求出 f(1),f(2)f(n) .
1n105 ,答案对 998244353 取模.

Source : Comet OJ #2 F

设位置 i 的多项式 Fi(x)=pix+1pi ,则 i 的答案就是多项式 jiFj(x)A(x)=iaixi 的点积.

我们知道点积可以表示成减法卷积结果的常数项,即 f(i)=[x0]MULT(A,jiFj) .

可以像做多点求值那样,由于减法卷积满足

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