Luogu 3932(公式推导)(浮游大陆的68号岛)
2017-10-27 12:12
423 查看
传送门
~~~洛谷10月月赛R2~~~
题解:
P.S.注意减法取模处理不慎易出现负数,不然就1A了。。。
~~~洛谷10月月赛R2~~~
题解:
P.S.注意减法取模处理不慎易出现负数,不然就1A了。。。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define fil(a,b) memset(a,b,sizeof(a)) typedef long long ll; const int MAXN=2e5+4; const ll MOD=19260817; int n,q; ll d[MAXN],a[MAXN],das[MAXN],da[MAXN]; inline ll read() { ll x=0;char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return x; } inline ll f(int l,int r,int p) { if (l>r) return 0; return ((das[r]-das[l-1]-(da[r]-da[l-1])*d[p]%MOD)%MOD+MOD)%MOD; } inline ll g(int l,int r,int p) { if (l>r) return 0; return (((da[r]-da[l-1])*d[p]%MOD-das[r]+das[l-1])%MOD+MOD)%MOD; } int main() { // freopen("P3932.in","r",stdin); fil(d,0),fil(das,0),fil(da,0); n=read(),q=read(); for (register int i=2;i<=n;++i) d[i]=(d[i-1]+read())%MOD; for (register int i=1;i<=n;++i) a[i]=read(); for (register int i=1;i<=n;++i) das[i]=(das[i-1]+a[i]*d[i]%MOD)%MOD,da[i]=(da[i-1]+a[i])%MOD; for (register int i=0;i<q;++i) { int p=read(),l=read(),r=read(); if (p<l) printf("%lld\n",f(l,r,p)); else if (p>r) printf("%lld\n",g(l,r,p)); else printf("%lld\n",(f(p+1,r,p)+g(l,p-1,p))%MOD); } return 0; }
相关文章推荐
- [luogu3932] 浮游大陆的68号岛
- 洛谷 3932 浮游大陆的68号岛 前缀和
- 洛谷3932:浮游大陆的68号岛——题解
- 浮游大陆的68号岛
- 线段树 洛谷P3932 浮游大陆的68号岛
- P3932 浮游大陆的68号岛 【线段树】
- P3932 浮游大陆的68号岛 【线段树】
- 洛谷P3932 浮游大陆的68号岛
- 洛谷10月月赛R2-T1-浮游大陆的68号岛
- noip模拟赛 浮游大陆的68号岛
- [洛谷P3962]浮游大陆的68号岛
- BP神经网络原理简单介绍以及公式推导(矩阵形式和分量形式)
- 机器学习方法篇(7)------LSTM公式推导
- 向量的倒影 公式推导
- 关于感知学习模型机中空间任一点到超平面的距离公式的推导过程
- Lucene打分公式的数学推导
- 超声波公式的推导
- BP算法与公式推导
- xmu 1125 越野车大赛(公式推导&&三分)(中等)
- 026 三角函数求导公式推导