多项式从入门到入土
开始了学习多项式秃头的旅途
拉格朗日插值
\(f(x)=\sum\limits_{i=1}^{n}y_i \prod\limits_{j!=i} \frac{x-x_i}{x_i-x_j}\)
如果题目中要求直接求\(f(k)\)的话
可以直接用以下的公式(废话)
\(f(k)=\sum\limits_{i=1}^{n}y_i \prod\limits_{j!=i} \frac{k-x_i}{x_i-x_j}\)
拉格朗日插值扩展
在绝大多数题目中我们需要用到的\(x_i\)的取值都是连续的,这样的话我们可以把上面的算法优化到\(O(n)\)复杂度
那么式子变成\(f(k)=\sum\limits_{i=0}^{n}y_i \prod \limits_{i\neq j} \frac{k-j}{i-j}\)
优化后面那一部分
记录一下分子的前缀积(\(pre_{i-1}\))和后缀积(\(nex_{i+1}\)),然后折半相乘
分子的话就是阶乘\(fac[i]*fac[n-i]\)
\(update:\)这里错了,应该是\(fac[i-1]*fac[n-i]\),\(lgj\)学长的博客里面写错了
最后得到式子\(f(k)=\sum\limits_{i=0}^{n}y_i\frac{pre_{i-1}*nex_{i+1}}{fac[i-1]*fac[n-i]}\)
注意分母的符号问题,当\(n-i\)是奇数时,应该是负号
见CF622F The Sum of the k-th Powers
重心拉格朗日插值法
设\(g=\prod\limits_{i=0}^{n}k-x_i\)
设\(t_i=\prod\limits_{i\neq j}\frac{y_i}{(x_i-x_j)}\)
所有每次新加入一个点的时候只需要计算它的\(t_i\)
例题
题目难度按照由易到难排序
CF622F The Sum of the k-th Powers