Description
给定 \(n\) 个点,确定一个多项式,并计算该多项式在另一个点的值
( \(luogu\) 的模板题)
Solution
直接给公式
原理:我们带进去一个 \(x=x_i\)
发现除了 \(i=i\) 那一项之外的所有项中分子必为 \(0\)
然后这样做是个 \(O(n^2)\) 的
连续的点值我们可以将它优化到 \(O(n)\)
比如下面的例子
由伯努利数或者差分可以证明是一个 \(k+1\) 次的多项式
一般在求这东西的时候就是要插值
当然,如果 \(n\le k+2\) 可以暴力做,因为这种题理论上 \(k\) 是比较小的
令我们取的是 \(1\to (k+2)\) 的点值
设 \(f_x=\sum\limits_{i=1}^x i^k\)
则有(其实这步我个人并没有掌握,坑待填)
然后推对答案的贡献就有
直接考虑分子分母,分母本质上面是两个阶乘的乘积,分子是一个前缀积乘上一个后缀积(把 \(i\) 隔过去了)
这样就可以 \(O(k)\) 做了
当然……这题本来是给斯特林数做的……
感觉理解的还不太行,不太能明白这个式子是怎么用的
到时候问问留坑吧
重心拉格朗日插值
看懂式子了……但是好像并不知道怎么用……
还是上原来的式子
令\(g=\prod\limits_{i=0}^n n-x_i\)
那么
再令\(t_i=\frac{y_i}{\prod\limits_{j \ne i} x_i-x_j}\)
那么
然后我们新加入点值的时候需要计算一下它的 \(t_i\) 并且更新 \(g\)就行了……
不会打,不知道怎么用.jpg
学了这么多,最后看看那个不太板子的板子题
审题是个关键点
推推式子就能做完了(具体这个贡献法是怎么来的……留坑吧)
啊这个\(k\) 显然等于 \(m+1\)
然后这个题可以做拉格朗日插值
结论:自然数 \(k\) 次幂和是一个\(k+1\) 次的多项式
上个板子就没了