多项式从入门到入土

开始了学习多项式秃头的旅途

拉格朗日插值

\(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}\)

P4781 【模板】拉格朗日插值

拉格朗日插值扩展

在绝大多数题目中我们需要用到的\(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\)

\[f(k)=g\sum\limits_{i=0}^{n}\prod \limits_{i\neq j} \frac{y_i}{(k-x_i)(x_i-x_j)} \]

\(t_i=\prod\limits_{i\neq j}\frac{y_i}{(x_i-x_j)}\)

\[f(k)=g\sum\limits_{i=0}^{n}\frac{t_i}{k-x_i} \]

所有每次新加入一个点的时候只需要计算它的\(t_i\)

例题

题目难度按照由易到难排序

P4781 【模板】拉格朗日插值

CF622F The Sum of the k-th Powers

P4593 [TJOI2018]教科书般的亵渎

\[\large \text {暂时入土,未完待续} \]

posted @ 2020-06-10 21:57  pyyyyyy  阅读(159)  评论(1编辑  收藏  举报