首页 > 其他 > 详细

多项式全家桶学习记录

时间:2020-06-11 01:29:41      阅读:38      评论:0      收藏:0      [点我收藏+]

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

拉格朗日插值

\(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]教科书般的亵渎

多项式全家桶学习记录

原文:https://www.cnblogs.com/pyyyyyy/p/13089430.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!