2019icpc南昌邀请赛B Polynomial (拉格朗日插值法)
题目链接:https://nanti.jisuanke.com/t/40254
题意:

思路:
这题要用到拉格朗日插值法,网上查了一下,找到一份讲得特别好的:





--------------------------------------------------------
以上关于拉格朗日插值法的理论转载自:https://blog.csdn.net/ftx456789/article/details/90750508
关于这道题的做法:
这题给了x从0~n的n+1种取值,那么可以用O(n)来插值,但是它所要求的是
。能够想到要用前缀来预处理,我们令:
,则答案为
。
直接预处理S(x)肯定会T,我们再用一次拉格朗日插值法。
先知道一个常识:n次多项式的前缀和是 n+1 次的多项式,也就是说 S(x)S(x) 要通过 n+2 个点来求出,然而题目只给出了n+1 个点。我们利用前面的插值法求出f(n+1),这样就有了n+2个点。之后就可以对S(x) 进行插值了。总复杂度为O(T*m*n)
要注意的是要线性求逆元,如果用费马小定理会T。
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std; typedef long long LL; const int maxn=;
const int MOD=; int T,n,m;
LL a[maxn],inv[MOD+],finv[maxn];
LL sum[maxn],ans; LL qpow(LL a,LL b){
LL res=;
while(b){
if(b&) res=res*a%MOD;
a=a*a%MOD;
b>>=;
}
return res;
} void init(){
inv[]=;
for(int i=;i<=MOD+;++i)
inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;
finv[]=;
for(int i=;i<=;++i)
finv[i]=finv[i-]*inv[i]%MOD;
} LL cal(LL x,LL *a,LL up){
LL res=;
LL p=;
for(LL i=;i<=up;++i)
p=p*(x-i)%MOD;
for(LL i=;i<=up;++i){
int f=(up-i)&?-:;
res=(res+MOD+a[i]*f*p%MOD*inv[x-i]%MOD*finv[i]%MOD*finv[up-i]%MOD)%MOD;
}
return res;
} int main(){
init();
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i){
scanf("%lld",&a[i]);
a[i]%=MOD;
}
a[n+]=cal(n+,a,n);
sum[]=a[];
for(int i=;i<=n+;++i)
sum[i]=(sum[i-]+a[i])%MOD;
while(m--){
int l,r;
scanf("%d%d",&l,&r);
if(r<=n+){
printf("%lld\n",(sum[r]-sum[l-]+MOD)%MOD);
continue;
}
if(l-<=n+)
ans=(cal(r,sum,n+)-sum[l-]+MOD)%MOD;
else
ans=(cal(r,sum,n+)-cal(l-,sum,n+)+MOD)%MOD;
printf("%lld\n",ans);
}
}
return ;
}
2019icpc南昌邀请赛B Polynomial (拉格朗日插值法)的更多相关文章
- 2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)
题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ...
- 计蒜客 38228. Max answer-线段树维护单调栈(The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer 南昌邀请赛网络赛) 2019ICPC南昌邀请赛网络赛
Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of ...
- 2019icpc南昌邀请赛F(线段树)
题目链接:https://nanti.jisuanke.com/t/40258 题意:给长为n的数组a,有m次操作,包括单点修改和查询F(l,r),其值为所有f(i,j)的异或和,l<=i< ...
- 2019ICPC南昌邀请赛 Sequence
题意:给出n个点的权值,m次操作,操作为1时为询问,每次询问给出 l 和 r ,求 f(l,r).操作为0时为修改权值.f(l,r)=f(l,l)⊕f(l,l+1)⊕⋯⊕f(l,r)⊕f(l+1,l+ ...
- Matlab数值计算示例: 牛顿插值法、LU分解法、拉格朗日插值法、牛顿插值法
本文源于一次课题作业,部分自己写的,部分借用了网上的demo 牛顿迭代法(1) x=1:0.01:2; y=x.^3-x.^2+sin(x)-1; plot(x,y,'linewidth',2);gr ...
- 拉格朗日插值法——用Python进行数值计算
插值法的伟大作用我就不说了.... 那么贴代码? 首先说一下下面几点: 1. 已有的数据样本被称之为 "插值节点" 2. 对于特定插值节点,它所对应的插值函数是必定存在且唯一的(关 ...
- CPP&MATLAB实现拉格朗日插值法
开始学习MATLAB(R和Python先放一放...),老师推荐一本书,看完基础就是各种算法...首先是各种插值.先说拉格朗日插值法,这原理楼主完全不懂的,查的维基百科,好久才看懂.那里讲的很详细,这 ...
- codeforces 622F. The Sum of the k-th Powers 拉格朗日插值法
题目链接 求sigma(i : 1 to n)i^k. 为了做这个题这两天真是补了不少数论, 之前连乘法逆元都不知道... 关于拉格朗日插值法, 我是看的这里http://www.guokr.com/ ...
- bzoj4559[JLoi2016]成绩比较 容斥+拉格朗日插值法
4559: [JLoi2016]成绩比较 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 261 Solved: 165[Submit][Status ...
随机推荐
- C#窗体的resx文件
这些图片在项目文件中没找到,原来都存在了resx文件中. 属性界面的Image.BackgroundImage属性手动选择的图片会自动存储到resx文件中,之后这些图片源文件就可以删除了.resx中的 ...
- Word:表格无法分页显示
造冰箱的大熊猫@cnblogs 2019/1/30 今天遇到一个Word中表格无法分页显示的问题,特记录下来以备后查 我们知道,在Word中将表格不设置为“允许跨页断行”,假设表格中第二行某个单元格的 ...
- luoguP1739 表达式括号匹配 x
P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹 ...
- Topics(主题模式)
引言 topic exchange和direct exchange类似,都是通过routing key和binding key进行匹配,不同的是topic exchange可以为routing key ...
- vue-property-decorator知识梳理
仓库地址: /* npm 仓库地址 */ // https://www.npmjs.com/package/vue-property-decorator /* github地址 */ // https ...
- 8.3 CSS样式
8.3 CSS样式 参考链接:http://how2j.cn/k/css2/css2-border/249.html 一.CSS有什么作用. 不使用css 给每一个单元格加上背景颜色 .就需要给每一个 ...
- 分布式锁与实现--基于ZooKeeper实现
引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...
- IDEA:Process finished with exit code -1073741819 (0xC0000005)
出门左转:https://www.cnblogs.com/virgosnail/p/10335224.html
- rabbitmq访问控制试坑篇
访问控制我理解就是两层,第一层是Virtual host,相当于一个个独立主机 第二层是这个permissions,对照下图权限表 权限表(重要!) 需求 configgure write read ...
- 评CSDN上一篇讲述数据迁移的文章“程序员 12 小时惊魂记:凌晨迁移数据出大事故!”
原文地址:https://blog.csdn.net/csdnnews/article/details/98476886 我的评论:热数据迁移,本不该搞突击,这样一旦出现问题后果不堪设想,多少DBA和 ...