首页 > 其他分享 >拉格朗日插值总结

拉格朗日插值总结

时间:2025-01-16 19:22:33浏览次数:1  
标签:总结 拉格朗 ch 插值 res int aligned mod

问题

给定 \(n\) 个点,确定一个多项式 \(f(x)=\sum_{i=0}^{n-2}a_ix^i\)。求 \(f(k)\)。

解法

拉格朗日插值的核心思想是通过构造 \(n\) 个函数,满足第 \(i\) 个函数经过 \((x_1,0),(x_2,0),\cdots,(x_i,y_i),\cdots,(x_n,0)\),将这 \(n\) 个函数的系数累加即可得到原函数。

具体地,有\(f_i(x)= y_i \prod_{i \not = j} \frac{x-x_j}{x_i-x_j}\)。

故原函数

\[\begin{aligned} f(x)=\sum_{i=1}^{n}y_i \prod_{i \not = j} \frac{x-x_j}{x_i-x_j} \end{aligned} \]

那么将原问题的 \(k\) 代入得:

\[\begin{aligned} f(k)=\sum_{i=1}^{n}y_i \prod_{i \not = j} \frac{k-x_j}{x_i-x_j} \end{aligned} \]

这样就在 \(\Theta(n^2)\) 的时间求得一个多项式的值。

练习

P4781 【模板】拉格朗日插值

#include <bits/stdc++.h>
#define int long long

using namespace std;

inline int read()
{
    int w=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        w=(w<<1)+(w<<3)+(ch^48);
        ch=getchar();
    }
    return w*f;
}
void write(int x)
{
    if(x<0) x=-x;
    if(x>9) write(x/10);
    putchar(x%10+'0');
}

const int mod=998244353;
const int maxn=2e3+10;
int n,k;
int x[maxn],y[maxn];
int qpow(int a,int b,int mod)
{
    int res=1;
    while(b)
    {
        if(b&1) res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}

signed main()
{
    n=read(),k=read();
    for(int i=1;i<=n;++i)
    {
        x[i]=read(),y[i]=read();
    }
    int ans=0;
    for(int i=1;i<=n;++i)
    {
        int fz=1,fm=1;
        for(int j=1;j<=n;++j)
        {
            if(j!=i)
            {
                (fz*=(k-x[j]+mod)%mod)%=mod;
                (fm*=(x[i]-x[j]+mod)%mod)%=mod;
            }
        }
        (ans+=fz*qpow(fm,mod-2,mod)%mod*y[i])%=mod;
    }
    cout<<ans<<endl;
    return 0;
}

标签:总结,拉格朗,ch,插值,res,int,aligned,mod
From: https://www.cnblogs.com/vanueber/p/18675630

相关文章

  • 插值函数和插值多项式
    目录插值函数插值多项式插值函数设函数y=f(x)f(x)f(x)在区间......
  • java-面试实战总结-2025-01-16
     下午接到hr电话,说是想约晚上7点的线上面试,感觉准备时间有点来不及了,我就跟hr沟通把时间改到了8点,多腾出来点时间进行复习。  招聘信息强调了要求会微服务,我这边微服务用的少,到家后就着重复习了微服务相关的知识。面试过程大概有半个小时,面试流程如下:1、开始后进行自我......
  • Bootstrap-table 使用总结
    原文链接:https://www.cnblogs.com/laowangc/p/8875526.html一、什么是Bootstrap-table?在业务系统开发中,对表格记录的查询、分页、排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有......
  • 2024 京东零售技术年度总结
    作者:京东零售零售技术每一次回望,都为了更好地前行。2024年,京东零售技术在全面助力业务发展的同时,在大模型应用、智能供应链、端技术、XR体验等多个方向深入探索。京东APP完成阶段性重要改版,打造“又好又便宜”的优质体验;国补专区快速上线、助力“以旧换新”;大模型应用在大量零......
  • 充电桩研发运营公司管理总结
    文章目录概要充电桩桩公司整体架构流程发起会议的主要目的怎么样有效分析需求怎么样安排任务怎么样做好汇报小结概要怎么样做好一款产品研发充电桩研发分为硬件,软件充电站运营分为用户充电充电桩采集数据站运营推广对整体研发流程和运营有一个清晰的概念充电......
  • 初赛题目总结
    前言:记录一些初赛知识点stl类1.1:memcpy函数,从存储区str2复制n个字节到存储区str用法:memcpy(a,b,size(b));数组类2.1:在C++中,声明数组时可以省略数组大小是错误的。2.2:获取数组大小写法:sizeof(arr)/sizeof(arr[0])2.3:尽管数组大小通常在编译时确定,但通过动态分......
  • 字符串算法总结
    KMPAC自动机ACAMexKMPZ函数manacher后缀自动机SAM结论与思考一个节点\(i\)到根节点的链上所有节点endpos的并集是以\(i\)为结尾的所有字符串(以\(i\)为结尾的后缀)。节点\(i\)的endpos里所有后缀的出现次数相等,且儿子的endpos里的字符串长度一定大于父亲......
  • LeetCode题练习与总结:省份数量--547
    一、题目描述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 nxn 的矩阵 isConnected ,其......
  • LeetCode题练习与总结:游戏玩法分析 Ⅳ -- 550
    一、题目描述SQLSchema> PandasSchema> Table: Activity+--------------+---------+|ColumnName|Type|+--------------+---------+|player_id|int||device_id|int||event_date|date||games_played|int|+----......
  • LeetCode题练习与总结:移除盒子--546
    一、题目描述给出一些不同颜色的盒子 boxes ,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >=1),这样一轮之后你将得到 k*k 个积分。返回 你能获得的最大积分和 。示例1:......