拉格朗日插值小记
对于
1. 拉格朗日插值
拉格朗日插值的核心思想是每次只考虑一个点值,将其他点值都视作
- 当且仅当
时 ,当 时, 。
这样我们可以构造出经过所有点的函数
则我们首先对于每个点
这样我们可以轻松的用
直接套式子即可,逆元可以乘完再逆,写的时候脑子宕机了。
int main(){
n = read(),k = read();
for(int i = 1;i <= n;i++)x[i] = read(),y[i] = read();
ll ans = 0;
for(int i = 1;i <= n;i++){
ll s = y[i] % mod;
for(int j = 1;j <= n;j++){
if(i == j)continue;
s = s * (k - x[j] + mod) % mod;
s = s * ksm((x[i] - x[j] + mod) % mod,mod - 2) % mod;
}
(ans += s) %= mod;
}
printf("%lld\n",ans);
return 0;
}
2. 一些小优化
当这些点值是
前者我们可以首先算出
后者我们可以分成
预处理逆元,复杂度
例题: CF622F The Sum of the k-th Powers
即求
首先我们可以知道这是一个关于
-
如何证明是一个
次多项式呢?我们可以归纳证明: 首先懒得奠基。
假设该结论对所有
都成立,则现在证明 时成立。首先有
。我们对所有的
求和,左边是个裂项,答案为 。有
把右边
移项得左半部分次数为
,右半部分最大次数为 ,证毕。
3. 多项式快速插值
不会
4. 例题
I CF622F The Sum of the k-th Powers
上述。
代码
首先我们考虑 DP,不妨设
设
则有转移方程
我们可以发现
-
由转移方程得,
。首先有对于一个
次多项式 ,则 是一个 次多项式,可以二次项定理拆开简单证明。 的次数 等于 的次数 ,又有 是一个 次多项式,可得 是一个关于 的 次多项式。
则我们求出前
复杂度
III BZOJ3453: tyvj 1858 XLkxc
题意,给定
首先
最后答案即为
没有代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下