洛谷 P4781 拉格朗日插值

一文入门BMS(电池管理系统) 本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。 阅读详情

题面

给出平面上 n 个点,唯一确定一个多项式(次数小于等于 n-1 ),并给一个值求 f(k)f(k)f(k) mod 998244353

分析

根据线性代数里的结论,从 n 个点得到的 f(x) 可以如下表示
f(x)=∑i=1nyi×∏j=1,j≠inx−xjxi−xjf(x)=\displaystyle\sum_{i=1}^{n} y_i × \displaystyle\prod_{j=1,j≠i}^{n}{{x-x_j} \over {x_i-x_j}}f(x)=i=1∑n​yi​×j=1,j​=i∏n​xi​−xj​x−xj​​

其中 x−xjxi−xj\displaystyle{{x-x_j} \over {x_i-x_j}}xi​−xj​x−xj​​ 被称作插值基,容易验证将某个给出的点(n个点中的某个点)带入(定为m)时:
xm=xix_m=x_ixm​=xi​时,该插值基的值为1
xm≠xix_m≠x_ixm​​=xi​时,分子上有一项是0,该插值基的值为0.
这就验证了 f(x) 过这 n 个点


计算过程比较简单,直接带入即可,复杂度 O(n2)O(n^2)O(n2)

值得一提的是因为每一项都有一个大分母,并且还要取模,不难想到需要求分母的乘法逆元。
取模数是个质数,就可以采用费马小定理求逆。
当 p 是质数时,ap≡a(modp)a ^p\equiv a(modp)ap≡a(modp),或者说ap−1≡1(modp)a ^{p-1}\equiv 1(modp)ap−1≡1(modp),后者进行拆分:
ap−2×a≡1(modp)a ^{p-2}×a\equiv 1(modp)ap−2×a≡1(modp)
就发现了 ap−2%pa^{p-2} \% pap−2%p 是 aaa 的乘法逆元,当p为质数

代码

#include <stdio.h>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
#define mod 998244353
inline long long power(long long a, long long b, long long p)//a^b mod p
{ 
	long long ans = 1;
	while (b)
	{
		if (b & 1)ans *= a;
		b >>= 1;
		a = a * a % p;
		ans = ans % p;
	}
	return ans;
}
long long x[2005], y[2005], k, n;
long long lagrange(long long n, long long k)
{
	long long ans = 0;
	long long under, up;//分母,分子
	for (int i = 0; i < n; i++)//插第i个点
	{
		under = 1, up = 1;
		for (int j = 0; j < n; j++)//第j项
		{
			if (i != j)//缺项
			{
				up = up * (k - x[j]) % mod;
				under =under* (x[i] - x[j]) % mod;
			}
		}
		ans += y[i] * up % mod * power(under, mod - 2, mod) % mod;
		ans %= mod;
	}
	return (ans+mod)%mod;
}
int main()
{
    ios::sync_with_stdio(false);
	cin >> n >> k;
	for (int i = 0; i < n; i++)cin >> x[i] >> y[i];
	cout << lagrange(n, k);
    return 0;
}
[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据 本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。 阅读详情

相关推荐

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 775

洛谷-4781 【模板】拉格朗日插值

题目描述 由小学知识可知,n个点(xi,yi)(x_i,y_i)(xi​,yi​) ​可以唯一地确定一个多项式 现在,给定n个点,请你确定这个多项式,并将k代入求值 求出的值对998244353取模 输入输出格式 输入格式: 第一行两个正整数n,k,含义如题 接下来n行,每行两个正整数xi,yix_i,y_ixi​,yi​ 输出格式: 一个整数表示答案 输入输出样例 输入样例#1: 3 10...

mkopvec的博客 249

vins-mono保存、重载地图、evo工具测试

下面咱们来对vins-mono的重定位vins-mono官方源码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono https://blog.youkuaiyun.com/learning_tortosie/article/details/83182258 运行这条: roslaunch benchmark_publisher publish.launc...

追 1万+

拉格朗日插值 - 洛谷 P4781

拉格朗日插值 - 洛谷 P4781 题目描述 n个点(xi,yi)可以唯一地确定一个多项式y=f(x)。n 个点 (x_i,y_i)可以唯一地确定一个多项式 y = f(x)。n个点(xi​,yi​)可以唯一地确定一个多项式y=f(x)。 现在,给定这n个点,请你确定这个多项式,并求出f(k) mod 998244353的值。现在,给定这 n 个点,请你确定这个多项式,并求出 f(k) \bmod 998244353的值。现在,给定这n个点,请你确定这个多项式,并求出f(k)mod998244353的值。

njuptACMcxk的博客 599

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1134

CMake安装grpc生成gRPCTargets.cmake文件

以下是安装语句: cd grpc_folder git submodule update --init cmake .. make -j 4 sudo make install 然而编写依赖gRPC的程序,发现无法调用gRPC的CMake文件,错误提示如下所示: include could not find load file: /usr/local/lib/cmake/g...

2328

洛谷P4781 【模板】拉格朗日插值

题目链接   题解: 一个奇怪的公式...   代码: #include&lt;bits/stdc++.h&gt; #define ll long long using namespace std; struct aaa{ ll x,y; }a[10001]; ll n,m,ans,p=998244353; ll ksm(ll x,ll y){ ll hh=1; while(y...

qq_41510496的博客 331

如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件

在 SAPGUI 里显示 PDF 文件是实际项目中一个很有用的需求。因为在 SAP 实际业务场景中,有大量的流程会生成 PDF 格式的数据。把这种类型的数据输出显示在 SAPGUI 里,方便最终用户查看。本教程后续步骤,还会向大家介绍如何使用 ABAP 代码生成 PDF 格式的数据。本步骤只是简单的将本地 PDF 文件,上传到 ABAP 系统并显示在 SAPGUI 里。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2685

洛谷 P4781 【模板】拉格朗日插值

题目传送门 参考:拉格朗日插值 学习笔记 代码: #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int maxn=2000+100; const int mod=998244353; int x[maxn],y[maxn]; ll mypow(ll a,ll b){ ...

kaven 3815

基于 Simulink 的 PFC + LLC 级联系统联合仿真与优化实战教程

摘要:本教程详细介绍了2kW级AC-DC变换器建模方法,采用"BoostPFC+LLC谐振变换器"组合架构。重点解析了双级系统的核心控制策略:前级BoostPFC实现功率因数校正(PF>0.95),后级LLC通过变频调制(PFM)实现高效能量传输。教程包含四大关键步骤:PFC建模与控制、LLC参数计算与实现、母线电容优化设计以及系统联合调试,特别针对级联系统常见的母线电容震荡问题提供了解决方案。同时给出了仿真波形分析指南和避坑建议,包括代数环处理、仿真步长设置等实用技巧,为新能源车

MHD0815的博客 118

OpenClaw实现多agent协作研究

本文介绍了如何构建多agent协作系统,通过飞书机器人实现任务分配与执行。系统包含三个agent:research_leader(总调度)、research_content(内容生成)和research_review(内容审核)。详细说明了agent配置方法(包括创建命令、权限设置)、飞书channel绑定方式,以及通过共享目录和会话机制实现协作。最后展示了应用示例,用户只需向leader机器人下达任务,系统即可自动完成内容生成和审核的全流程。

hhue2007的专栏 616

洛谷P4463:calc(dp、拉格朗日插值)

很妙的拉格朗日插值练习

BUG_Creater_jie的博客 370

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 494

P4781-[模板]拉格朗日插值

正题 题目链接:https://www.luogu.com.cn/problem/P4781 题目大意 给出nnn个点确定一个多项式y=f(x)y=f(x)y=f(x),求f(k)f(k)f(k)的值 解题思路 拉格朗日插值: f(k)=∑i=1nyi∏i≠jk−xjxi−xjf(k)=\sum_{i=1}^ny_i\prod_{i\neq j}\frac{k-x_j}{x_i-x_j}f(k...

QuantAsk 590

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[洛谷P4781]【模板】拉格朗日插值

题目大意:给你$n(n\leqslant2000)$个点,要你求$n-1$次经过这$n$个点的多项式在$k$处的值 题解:$Lagrange$插值:$$f_x=\sum\limits_{i=1}^ky_i\prod\limits_{j=1,j\not=i}^k\dfrac{x-x_j}{x_i-x_j}$$卡点:无 C++ Code: #include <algorithm&...

weixin_30859423的博客 112

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

洛谷P4781 【模板】拉格朗日插值(拉格朗日插值)

题意 题目链接 Sol 记得NJU有个特别强的ACM队叫拉格朗,总感觉少了什么。。 不说了直接扔公式 \[f(x) = \sum_{i = 1}^n y_i \prod_{j \not = i} \frac{k - x[j]}{x[i] - x[j]}\] 复杂度\(O(n^2)\) 如果\(x\)的取值是连续的话就前缀积安排一下,复杂度\(O(n)\) #include&lt;bits/stdc...

weixin_34153893的博客 141

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

拉格朗日插值法模板

重点:k次幂的前缀和是k+1次多项式 即1n+2n+...+xn1^n+2^n+...+x^n1n+2n+...+xn 朴素模板 洛谷P4781 已知n个点(x1,y1),(x2,y2)...(xn,yn)(x_1,y_1),(x_2,y_2)...(x_n,y_n)(x1​,y1​),(x2​,y2​)...(xn​,yn​),求其构成的n-1次多项式中横坐标为k的对应的值。 时间复杂度: O(...

zxwsbg的博客 278

P4781 【模板】拉格朗日插值 题解

本文介绍了拉格朗日插值法的模板实现。题目给定n个互不相同的点(xi,yi),要求构造一个n-1次多项式f(x),并计算f(k) mod 998244353的值。通过拉格朗日插值公式,对每个点计算基函数乘积,最后将所有基函数加权求和得到结果。代码使用快速幂求逆元处理除法运算,时间复杂度为O(n²)。输入输出样例验证了算法的正确性,能正确处理二次函数和线性函数的情况。

bz02_2023f2的博客 320

【多项式】拉格朗日插值

洛谷 - P4781 【模板】拉格朗日插值 // Luogu P4781 拉格朗日插值 #include <bits/stdc++.h> #define ll long long #define N 2003 #define MOD 998244353ll using namespace std; int n; ll k, x[N], y[N]; ll ans = 0ll; ll qpow(ll a, ll b, ll p = MOD) { ll res = 1; a %= p;

weifeng2356的博客 325

2020.02.29日常总结兼拉格朗日插值算法略讲

【前置知识】\color{green}{【前置知识】}【前置知识】 快速幂(O(log⁡n)O(\log n)O(logn)) 利用快速幂求逆元 【算法略讲】\color{green}{【算法略讲】}【算法略讲】 【模板链接】:\color{blue}{【模板链接】:}【模板链接】: 洛谷P4781 【算法略讲】:\color{blue}{【算法略讲】:}【算法略讲】: 所谓的拉格朗日插值算...

ZHUYINGYE_123456的博客 193

P4781 【模板】拉格朗日插值

传送门 把公式实现一下即可: 当xxx连续的时候可以优化为O(N)O(N)O(N)。 // Problem: P4781 【模板】拉格朗日插值 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P4781 // Memory Limit: 125 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org) //#pragma GCC optim

m0_51068403的博客 365

拉格朗日插值法

当 X 的取值不一定是 1-n 连续的时候,我们只能 O(n²) 地插出结果 洛谷 P4781 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=2e3+10; const int mod=998244353; int x[N],y[N]; ll quick_pow(ll a...

StarrYooSkY的博客 357

Luogu P4781【模板】拉格朗日插值

洛谷传送门 板题…注意一下求多个数的乘积的逆元不要一个个快速幂求逆元,那样很慢,时间复杂度就是O(n2log)O(n^2log)O(n2log).直接先乘起来最后求一次逆元就行了.时间复杂度为O(nlog+n2)=O(n2)O(nlog+n^2)=O(n^2)O(nlog+n2)=O(n2) 这样的拉格朗日插值是预处理O(n2)O(n^2)O(n2),插入O(n)O(n)O(n),查询O(n)O(...

Ark 276

rstudio拉格朗日插值法_拉格朗日插值法学习笔记

拉格朗日插值法是一个根据点对求回原函数的算法,原理挺好懂的。原理和优化方法上面的大佬都讲得很好。其实主要就是这个式子:然后暴力算这个式子的话是每求一项f(k)的时间复杂度都是n^2。这个时间很不优秀,于是我们想办法在一些特殊时候优化它。在x连续的时候我们可以通过预处理的方式加快速度,式子为然后其实拉格朗日插值就上面两个式子,具体题目的具体点对不一样,但是插值的方法就是这样。然后重心拉格朗日插值法就...

weixin_35048919的博客 1358

【luogu4781】拉格朗日插值

题目背景 这是一道模板题 题目描述 由小学知识可知,nn个点(x_i,y_i)(xi​,yi​)可以唯一地确定一个多项式 现在,给定nn个点,请你确定这个多项式,并将kk代入求值 求出的值对998244353998244353取模 输入格式 第一行两个正整数n,kn,k,含义如题 接下来nn行,每行两个正整数x_i,y_ixi​,yi​,含义如题 ...

dimeitong1731的博客 175

【算法讲14:拉格朗日插值】拉格朗日插值入门 与 拉格朗日插值差分法

【算法讲14:拉格朗日插值】前言引入⌈\lceil⌈拉格朗日插值⌋\rfloor⌋代码⌈\lceil⌈拉格朗日插值⌋\rfloor⌋差分法运用代码 前言 拉格朗日插值可以出的很难,对于一个 nnn 阶多项式,可以优化成 O(nlog⁡n)O(n\log n)O(nlogn) 但是需要 FFTFFTFFT 等知识点,博主比较菜就只能搞搞入门的了 (哭) 基础的高斯消元法可以 O(n3)O(n^3)O(n3) 求解 nnn 阶多项式,但是貌似不够用呀 这时就出现了 O(n2)O(n^2)O(n2) 的拉格朗日

溢流眼泪的博客 1135
上一篇: Codeforces Round #623 A.Dead Pixel
下一篇: Base64 加密
engineoid
博客等级 码龄10年 6粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值