【BZOJ3453】XLkxc [拉格朗日插值法]】的更多相关文章

XLkxc Time Limit: 20 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定 k,a,n,d,p f(i)=1^k+2^k+3^k+......+i^k g(x)=f(1)+f(2)+f(3)+....+f(x) 求(g(a)+g(a+d)+g(a+2d)+......+g(a+nd))mod p Input 第一行数据组数,(保证小于6) 以下每行四个整数 k,a,n,d Output 每行一个结果…
本文源于一次课题作业,部分自己写的,部分借用了网上的demo 牛顿迭代法(1) x=1:0.01:2; y=x.^3-x.^2+sin(x)-1; plot(x,y,'linewidth',2);grid on;%由图像可知 根在1.05到1.15之间 syms x s0=diff(x^3-x^2+sin(x)-1,x,1); % 得到s0= cos(x) - 2*x + 3*x^2 % 迭代方程为 y=x-(x.^3-x.^2+sin(x)-1)/(cos(x) - 2.*x + 3*x.^2…
插值法的伟大作用我就不说了.... 那么贴代码? 首先说一下下面几点: 1. 已有的数据样本被称之为 "插值节点" 2. 对于特定插值节点,它所对应的插值函数是必定存在且唯一的(关于这个的证明我暂时不说了,如果哪天我回头看看我的blog有点寒碜,我再再补上) 也就是说对于同样的插值样本来说,用不同方法求得的插值函数本质上其实是一样的. 3. 拉格朗日插值法依赖于每个插值节点对应的插值基函数,也就是说每个插值节点都有对应的插值基函数. 4. 拉格朗日插值函数最终由所有插值节点中每个插值节…
开始学习MATLAB(R和Python先放一放...),老师推荐一本书,看完基础就是各种算法...首先是各种插值.先说拉格朗日插值法,这原理楼主完全不懂的,查的维基百科,好久才看懂.那里讲的很详细,这里就不在赘述了.一般看这个范例,在回头看公式就比较容易理解. 关于MATLAB的实现,查了很多资料,下面的版本最好理解. %lagran1.m %求拉格朗日插值多项式和基函数 %输入的量:n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量X,纵坐标向量Y %输出的量:n…
题目链接 求sigma(i : 1 to n)i^k. 为了做这个题这两天真是补了不少数论, 之前连乘法逆元都不知道... 关于拉格朗日插值法, 我是看的这里http://www.guokr.com/post/456777/, 还挺有趣... 根据题目给出的例子我们可以发现, k次方的通项公式的最高次是k+1次, 根据拉格朗日插值法, 构建一个k+1次的方程需要k+2项. 然后公式是  , 对于这个题, p[i]就是i^k+(i-1)^k+(i-2)^k+.....+1^k, 这部分可以预处理出…
4559: [JLoi2016]成绩比较 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 261  Solved: 165[Submit][Status][Discuss] Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M- 1的整数.一位同学在必修课上可以获得的分数是1到Ui中的一个整数.如果在每门课上A获得的成绩均小于等于B获 得的成绩,则称A被B碾压.在B…
看zzq大佬的博客,看到了这个看似很深奥的东西,实际很简单(反正比FFT简单,我是一个要被FFT整疯了的孩子) 拉格朗日插值法 是什么 可以找到一个多项式,其恰好在各个观测点取到观测到的值.这样的多项式称为拉格朗日(插值)多项式数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个点的多项式函数. 定义 概念 一般地,若已知y=f(x)在互不相同n+1个点x0,x1,...xn处的函数值y0,y1,...yn(即该函数(x0,y0),(x1,y1),...(xn,yn)这n+1个点)则可…
[题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日插值 [题解]参考:拉格朗日插值法及应用 by DZYO 虽然式子很复杂,但一点一点化简有条理的化简后就可以做了. 首先最后是一个自然数幂和: $$\sum_{x=1}^{j}x^k$$ 这是一个k+1次多项式,可以理解为k+一个Σ(一般一个Σ增加一次项). 然后会发现最后部分和第二部分之间不需要插值,因为第…
链接: https://www.nowcoder.com/acm/contest/139/F 题意: 分析: 转载自:http://tokitsukaze.live/2018/07/19/2018niuke1.F/ 代码: #include <cstdio> #include <cassert> #include <algorithm> using namespace std; /// 注意mod,使用前须调用一次 polysum::init(int M); names…
F. The Sum of the k-th Powers 题目连接: http://www.codeforces.com/contest/622/problem/F Description There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. Find the value of the sum modulo 109 + 7 (so you shoul…
题目 P4463 [国家集训队] calc 集训队的题目真是做不动呀\(\%>\_<\%\) 朴素方程 设\(f_{i,j}\)为前\(i\)个数值域\([1,j]\),且序列递增的总贡献,则有: \[f_{i,j}=f_{i-1,j-1}*j+f{i,j-1}\] 由于递增序列可以全排列的:\(ans=f_{n,A}×n!\) 时间复杂度\(O(nA)\) 证明一 设\(f_{i,j}\)为关于\(j\)的\(2i\)次多项式,则\(f_{i-1,j-1}*j\)为关于\(j\)的2i-1次…
2655: calc Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 428  Solved: 246[Submit][Status][Discuss] Description 一个序列a1,...,an是合法的,当且仅当: 长度为给定的n. a1,...,an都是[1,A]中的整数. a1,...,an互不相等. 一个序列的值定义为它里面所有数的乘积,即a1a2...an. 求所有不同合法序列的值的和. 两个序列不同当且仅当他们任意一位不一样.…
1.快速排序  参考自: https://www.cnblogs.com/yundan/p/4022056.html namespace 快速排序算法 { class Program { static void Main(string[] args) { Console.WriteLine("请输入待排序数列以 , 分割"); string _s = Console.ReadLine(); string[] _sArray = _s.Split(",".ToChar…
BZOJ2655 Calc 参考 题意: 给定n,m,mod,问在对mod取模的背景下,从[1,m]中选出n个数相乘可以得到的总和为多少. 思路: 首先可以发现dp方程 ,假定dp[m][n]表示从[1 ~ m]中选出n个数乘积的和, 那么dp[m][n] = dp[m-1][n] + dp[m-1][n-1]*m*n. 但是这道题的m有1e9那么大,不能dp完,不过我们可以发现,dp[x][n] 是关于x的2*n多项式, 所以,我们只要先求出0~2*n的dp值,再用拉格朗日插值法算出dp[m]…
题目链接 传送门 题面 题意 给你\(n,k\),要你求\(\sum\limits_{i=1}^{n}i^k\)的值. 思路 根据数学知识或者说题目提示可知\(\sum\limits_{i=1}^{n}i^k\)可以被一个\(k+1\)次多项式表示. 由拉格朗日插值法(推荐学习博客)的公式:\(L(x)=l(x)\sum\limits_{i=1}^{k+2}y_i\frac{w_i}{x-x_i},\text{其中}l(x)=\prod\limits_{i=1}^{k+2}(x-i),y_i=\…
题目链接:https://nanti.jisuanke.com/t/40254 题意: 思路: 这题要用到拉格朗日插值法,网上查了一下,找到一份讲得特别好的: -------------------------------------------------------- 以上关于拉格朗日插值法的理论转载自:https://blog.csdn.net/ftx456789/article/details/90750508 关于这道题的做法:这题给了x从0~n的n+1种取值,那么可以用O(n)来插值…
数据插补 常见插补方法 插值法--拉格朗日插值法 根据数学知识可知,对于平面上已知的n个点(无两点在一条直线上可以找到n-1次多项式 ,使次多项式曲线过这n个点. 1)求已知过n个点的n-1次多项式: 将n个点的坐标带入多项式:得到 解出拉格朗日插值多项式: 将缺失的函数值对应的点x带入多项式得到趋势值得近似值L(x) 实验数据来源 链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA 提取码:t970 代码 #拉格朗日插值代码 import pa…
显然f(i)是一个k+2项式,g(x)是f(i)的前缀和,则显然其是k+3项式,插值即可.最后要求的东西大胆猜想是个k+4项式继续插值就做完了.注意2p>maxint…… #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #…
题意 题目链接 Sol 把式子拆开,就是求这个东西 \[\sum_{i = 0} ^n \sum_{j = 1}^{a + id} \sum_{x =1}^j x^k \pmod P\] 那么设\(f(x) = \sum_{i = 1}^n i^k\),这是个经典的\(k + 1\)多项式,直接差值 式子就可以化成 \[\sum_{i = 0} ^n \sum_{j = 1}^{a + id} f(j) \pmod P\] 设\(g(x) = \sum_{i = 1}^n f(x)\) 对\(g…
BZOJ 题意即求\[\sum_{i=0}^n\sum_{j=1}^{a+id}\sum_{x=1}^jx^k\] 我们知道最后一个\(\sum\)是自然数幂和,设\(f(n)=\sum_{x=1}^nx^k\),这是一个\(k+1\)次多项式,可以插值求出(当然本题只需要求出任意\(k+3\)个值即可不需要插值). 令\(g(n)=\sum_{i=1}^nf(i)\),(打表)差分可知这是一个\(k+2\)次多项式. 同样令\(h(n)=\sum_{i=0}^ng(a+id)\),同样差分可知…
考虑暴力dp:f[i][j]表示i个数值域1~j时的答案.考虑使其值域++,则有f[i][j]=f[i][j-1]+f[i-1][j-1]*i*j,边界f[i][i]=i!*i!. 注意到值域很大,考虑能不能在这一维上优化.完全不会证地有f[i][j]是一个关于j的2i次多项式.那么dp出一部分后就可以直接拉格朗日插值求出多项式,代入即可. #include<iostream> #include<cstdio> #include<cmath> #include<c…
已给sin0.32=0.314567,sin0.34=0.333487,sin0.36=0.352274,计算sin0.3367的值 #include <iostream> #include<iomanip> #include <cmath> using namespace std; int main() { double numerator_cofficient;      //用来记录插值分子的乘积结果 double denominator_coefficient;…
题目链接 题意 : 就是让你求个自然数幂和.最高次可达 1e6 .求和上限是 1e9 分析 :  题目给出了最高次 k = 1.2.3 时候的自然数幂和求和公式 可以发现求和公式的最高次都是 k+1 那么大胆猜测幂为 k 的自然数幂和肯定可以由一个最高次为 k+1 的多项式表示 不会证明,事实也的确如此 此时就变成了一个拉格朗日插值的模板题了 只要先算出 k+2 个值.然后就能确定最高次为 k+1 的多项式 套模板求值即可 当然自然数幂和不止这一种做法.例如伯努利数.斯特林数等 详细可参考 ==…
题目链接 题意 : 分析 : 分析就直接参考这个链接吧 ==> Click here 大体的思路就是 求和顺序不影响结果.故转化一下思路枚举每个最大值对答案的贡献最后累加就是结果 期间计数的过程要用到容斥和多项式求和 ( 利用拉格朗日求即可 ) 具体参考给出的链接 #include<bits/stdc++.h> #define LL long long #define ULL unsigned long long #define scl(i) scanf("%lld"…
题意:问你n*n的国际象棋棋盘上放3个互不攻击皇后的方案数. oeis……公式见代码内 //a(n) = 5a(n - 1) - 8a(n - 2) + 14a(n - 4) - 14a(n - 5) + 8a(n - 7) - 5a(n - 8) + a(n - 9) //0, 0, 0, 0, 24, 204, 1024, 3628, 10320, 25096, 54400, 107880 //package acm; import java.util.*; import java.io.*…
There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. Find the value of the sum  modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7). Input The only line conta…
摘自<c++和面向对象数值计算>,代码简洁明快,采用模板函数,通用性增强,对其中代码稍加改动 #include<iostream> #include <vector> using namespace std; template<class T> T lagrange(const vector<T>& vx,const vector<T>& vy,T x); int main() { const int n=4; vec…
namespace polysum { ; ll a[D],f[D],g[D],p[D],p1[D],p2[D],b[D],h[D][],C[D]; ll calcn(int d,ll *a,ll n) {//d次多项式(a[0-d])求第n项 if (n<=d) return a[n]; p1[]=p2[]=; rep(i,,d+) { ll t=(n-i+mod)%mod; p1[i+]=p1[i]*t%mod; } rep(i,,d+) { ll t=(n-d+i+mod)%mod; p2…
用的dls的板子,因为看不懂调了好久...果然用别人的板子就是这么蛋疼- -|| num数组0~k+1储存了k+2个值,且这k+2个值是自然数i的k次方而不是次方和,dls的板子自己帮你算和的...搞得我弄了好久 #include <iostream> #include <string.h> #include <cstdio> #include <vector> #include <queue> #include <assert.h>…
拉格朗日插值 插值真惨 众所周知$k+1$个点可以确定一个$k$次多项式,那么插值就是通过点值还原多项式的过程. 设给出的$k+1$个点分别是$(x_0,y_0),(x_1,y_1),...,(x_k,y_k)$,那么xjb构造一下: 设函数$f_i(x)=\frac{\prod\limits_{j\neq i}(x-x_j)}{\prod\limits_{j\neq i}(x_i-x_j)}\times y_i$ 显然这个函数当$x=x_i$时值为$y_i$,$x=x_j(0\leq j\le…