[ABC137F] Polynomial Construction 题解

news/2024/9/16 20:31:56/文章来源:https://www.cnblogs.com/JiaY19/p/18401399

明明有最厉害最好想的插值做法,怎么没有人写呢。

思路

考虑 \(n\) 个点可以确定一个 \(n-1\) 次多项式。

如何确定。

\(l_i(x)=\prod_{j\not =i}\frac{(x-x_j)}{(x_i-x_j)}\)

可以发现这个多项式在 \(x=x_i\) 时值为一,在 \(x=x_j(j\not = i)\) 时值为零。

那么就有:

\[F(x)=\sum_{i=0}^{i<n}y_il_i(x) \]

容易发现这个多项式恰好满足上面的条件,当然,这就是拉格朗日插值。

如何得到这个多项式?

可以先求出:

\[G(x)=\prod(x-x_i) \]

发现:

\[l_i(x)=\frac{G(x)}{(x-x_i)k_i} \]

其它的是一个常数所以和起来写成 \(k_i\) 即可。

那么就可以 \(O(n^2)\) 求解了。

思路

#include <bits/stdc++.h>
using namespace std;#define int long longint mod;inline int power(int x, int y) {int res = 1;while (y) {if (y & 1) res = res * x % mod;x = x * x % mod, y /= 2;}return res;
}inline vector<int> lagrange(const vector<int> &x, const vector<int> &y) {int n = x.size();vector<int> a(n + 1, 0), f(n, 0);a[0] = 1;auto add = [&](int x) {for (int j = n; j >= 1; j--)a[j] = (a[j - 1] - a[j] * x) % mod;a[0] = -a[0] * x % mod;};for (int i = 0; i < n; i++) add(x[i]);for (int i = 0; i < n; i++) {if (x[i] == 0) {for (int j = 0; j <= n; j++) a[j] = a[j + 1];a[n] = 0;} else {int iv = power(x[i], mod - 2);a[0] = -a[0] * iv % mod;for (int j = 1; j <= n; j++) {a[j] = a[j] - a[j - 1];a[j] = -a[j] * iv % mod;}}int s = 1;for (int j = 0; j < n; j++)if (i != j) s = s * (x[i] - x[j]) % mod;s = power(s, mod - 2) * y[i] % mod;for (int j = 0; j < n; j++)f[j] = (f[j] + a[j] * s) % mod;add(x[i]);}for (int i = 0; i < n; i++) f[i] = (f[i] % mod + mod) % mod;return f;
}signed main() {ios::sync_with_stdio(0), cin.tie(0);vector<int> a, b, f;cin >> mod;for (int i = 1, x; i <= mod; i++) {cin >> x;a.push_back(i - 1);b.push_back(x);}f = lagrange(a, b);for (int i = 0; i < mod; i++)cout << f[i] << " \n"[i == mod - 1];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793511.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷P3128 [USACO15DEC] Max Flow P 树上差分

传送门:P3128 [USACO15DEC] Max Flow P 首先要学会差分qwq 题目意思: 给定一个节点数为 \(n\) 的树,有 \(m\) 次操作。 每次操作给你两个数 \(s\) 和 \(t\),你需要在 \(s\) 到 \(t\) 的路径所经过点的运输压力 \(+1\)。 求最后运输压力最大的点的压力。 思路: 发现 \(s\) …

洛谷 P3034 Cow Photography G/S——题解

洛谷P3034题解传送锚点摸鱼环节 [USACO11DEC] Cow Photography G/S 题面翻译 题目描述 今天的奶牛们特别调皮!Farmer John 想做的只是给排成一排的奶牛拍照,但是在他拍下照片之前,奶牛们一直在移动。 具体地说,FJ 有 \(N\) 头奶牛(\(1 \leq N \leq 20\,000\)),每头奶牛都…

记一次.net使用httpclient中代码中使用response.EnsureSuccessStatusCode()引发的误会

1.问题背景 有一个拉取第三方数据存储到本地的需求,使用.net开发,使用httpClient发送post请求。第三方接口里面会校验我们发送的json数据,如果我们的数据格式不正确会抛出异常。 2.返回的结果不同? 第一步,我用postman做了测试,对方的接口可以调用,正确和错误都可以返回…

等保安全设备配置

这篇文章带你了解等保2.0 二级和三级安全设备配置!本文介绍了不同等级的等保规划设计,包括二级等保(基础版)、三级等保(基础版、增强版、豪华版)。其中,各版本均需配备主机杀毒软件和日志审计系统等,增强版和豪华版还需增加 IPS、Anti-DDoS 等。此外,文章还提到内网安…

触想全新Z系列工控机扩展IIoT应用潜能

8月31日,触想重磅推出全新Z系列高性能、扩展型工控机——TPC05/06/07-WIPC,提供标准版/双卡槽/四卡槽3款机型选择。作为边缘计算、机器视觉、AI智能和工业应用的理想机型,Z系列工控机支持Intel第12/13/14代Core™ i3/i5/i7/i9处理器,最多搭载4个PCIe/PCI的扩展能力,可外接…

K8S怎么删除一个Node节点

驱逐Pod 本次node为172.16.5.103# kubectl drain 172.16.5.103 --force --ignore-daemonsets查看该节点无法调度删除node# kubectl delete node 172.16.5.103

Base2024

Aura 酱的礼物 ssrf data伪协议 格式 data://text/plain,xxx能读取出内容 data://text/plain;base64,xxxxxx,xxxxxx先base64解码 再读取出内容 @隔断 当要求url开头时,使用@来分隔 file=http://baidu.com@127.0.0.1源码 <?php highlight_file(__FILE__); // Aura 酱,欢迎…

短视频程序源码,文件上传漏洞及防御方法

短视频程序源码,文件上传漏洞及防御方法一、文件上传漏洞原理在短视频程序源码的文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。二、文件上传漏洞触发点相…

Windows11安装Jenkins

Windows11安装Jenkins 1. 下载安装JDK11 从2022年 6 月 28 日发布的 Jenkins 2.357 和2022年9 月发布的 LTS 版本开始,Jenkins 需要 Java 11 才能使用,放弃 Java 8,如果用JDK1.8,那么Jenkins版本需要是2.357版本之前。 JDK11下载渠道oracle官网:https://www.oracle.com/ja…

PART1-Oracle关系数据结构-数据字典与动态性能视图

6. 数据字典与动态性能视图 6.1. 数据字典概述 Oracle数据库的一个重要组成部分是其数据字典,这是一个只读的表集合,提供了有关数据库的管理元数据。数据字典包含如下信息:数据库中每个模式对象的定义,包括列的默认值和完整性约束信息 分配给模式对象的空间量以及当前使用的…

最让程序员破防的12句话,你来补充下一句。

1、这个应该很简单吧,要那么久? 2、之前有一个类似的功能,拿过来改一下就好了。 3、产品说这个功能,已经给客户沟通好了,你想办法看怎么实现。 4、这个需求真的是最终版了。 5、要不我们还是使用上一版设计? 6、先做出来看看,不合适再改。 7、我就要这种效果,怎么实现是…

Delphi怎样安装和配置第三方控件并处理找不到文件

一、提示信息:[dcc64 Error] E1026 File not found: ‘***.res’ 二、解决方法: 1、正解:应当去看官方的安装说明文档,比如若你用自动或手动方式安装和部署TMS FlexCel Studio for VCL and FireMonkey *.*.*.*.exe时,你应当仔细阅读官方的安装说明:http://www.tmssoftwar…