【做题记录】ZJOI2014 力
-
【\(\text{ZJOI2014}\)】 力
- 算法:\(\text{FFT}\)
题目:
给出 \(n\) 个数 \(q_1,q_2, \dots q_n\),定义
\[F_j~=~\sum_{i = 1}^{j - 1} \frac{q_i \times q_j}{(i - j)^2}~-~\sum_{i = j + 1}^{n} \frac{q_i \times q_j}{(i - j)^2}
\]
\[E_i~=~\frac{F_i}{q_i}
\]
对 \(1 \leq i \leq n\),求 \(E_i\) 的值。
题解:
\[F_j~=~\sum_{i = 1}^{j - 1} \frac{q_i \times q_j}{(i - j)^2}~-~\sum_{i = j + 1}^{n} \frac{q_i \times q_j}{(i - j)^2}
\]
即求:
\[E_i=\frac{F_i}{q_i}=\sum_{j=1}^i\frac{q_j}{\left(i-j\right)^2}-\sum_{j=i+1}^n\frac{q_j}{\left(i-j\right)^2}
\]
令 \(x_i=\dfrac1{i^2}\),则
\[E_i=\sum_{j=1}^iq_jx_{i-j}-\sum_{j=i+1}^nq_jx_{j-i}
\]
再令 \(p_i=q_{n-i+1}\),那么
\[E_i=\sum_{j=1}^iq_jx_{i-j}-\sum_{j=i+1}^np_{n-j}x_{j-i}
\]
此时式子的左侧和右侧都是卷积的形式
用 \(\text{FFT}\) 维护这个过程
将数列 \(q_i\),\(p_i\),\(x_i\) 作为多项式 \(f\),\(h\),\(g\) 的系数
将他们用 \(\text{FFT}\) 乘起来,得到的 \(f \times g\),\(h\times g\) 的系数做差,即 \(E_i\)。