更快的多項式多點求值?

2022-05-04 13:36:11 字數 983 閱讀 3986

乙個奇妙的科技

定義卷積矩陣\(m=\)

\[\begin

a_0&0&0&...\\

a_1&a_0&0&...\\

a_2&a_1&a_0&...\\

...&...&...&...\\

\end\]

顯然,我們把多項式係數\(a_0,a_1...\)拿下來放到這個方陣中,另乙個多項式寫成列向量的形式,用此矩陣乘向量即是對另乙個多項式模\(x^n\)意義下的多項式乘法

冪和矩陣:\(a=\)

\[\begin

1&1&1&...\\

x_0&x_1&x_2&...\\

x_0^2&x_1^2&x_2^2&...\\

...&...&...&...\\

\end\]

多點求值矩陣\(b=a^t\)

冪和可以分治fft,通分即可

我們把分治fft的過程拆開來看,我們令\(c_i\)為分治過程中\(i\)節點(看成線段樹的結構)中所有多項式的乘積(即\(\prod_^r(x-a_i)\))(寫成方陣的形式)

冪和矩陣按分治fft拆開:

\[m_i=m_c_+m_c_

\]\(m_i\)表示我們冪和通分後只考慮\(l\sim r\)的\(a_j\)時的分子的多項式(寫成方陣的形式),葉節點的\(m_i\)就是常數多項式\(f(x)=1\)對應方陣

\(a=qm_1\),q是逆元多項式寫成的卷積矩陣

我們把冪和的n個變數寫成列向量x的形式

\(ax\)則是冪和的答案

然後一步神仙操作,我們發現冪和多項式的轉置就是多點求值多項式,於是\(a^tx\)是我們要的

我們有\((ab)^t=b^ta^t\)

直接整個轉置即可(把分治fft的過程全反過來)

這時我們把矩陣展開,重新寫成多項式,卷積多項式矩陣的轉置乘向量寫成卷積形式就是差卷積

只要求一次逆即可

複雜度依然\(o(nlog^2n)\),可以5e5多點求值~~~

多項式多點求值

給定乙個多項式和m個x,求相應的y 我們把需要求值的點均分成兩個集合s1,s2,構造兩個多項式p1,p2,使得這兩個多項式分別為這兩個集合的零點。則多項式a p1對於s1滿足a p1對s1內元素求值和a相同,a p2對於s2內求值和a相同,而它們次數都是n 2,分治遞迴下去繼續求值即可。由於多項式取...

多項式多點求值

給出乙個 n 次多項式 f x 對於 i in 1,m 求 f a i 答案對 998244353 取模 n,m in 1,64000 a i,x i f x in 0,998244353 考慮遞迴求解,令 mid lfloor dfrac m2 rfloor p 0 x prod x a i p ...

多項式求值

例2 8 多項式求值 考察多項式p x n cix i i 0 如果cn 0,則p 是乙個n 維多項式。下面程式可用來計算對於給定的值x,p x 的實際取值。假定根據f o r迴圈內部所執行的加和乘的次數來估算時間複雜性。可以使用維數n 作為例項特徵。進入f o r迴圈的總次數為n,每次迴圈執行1次...