1020——储物点的距离,捞!

#include<bits/stdc++.h>

using namespace std;

const int N=2e8+10;

const int M=1000000007;

long long int a[N],b[N],pre_a[N],pre_b[N],c[N],pre_c[N];

int main()

{

int n;

int m;

cin>>n>>m;

for(int i=2; i<=n; i++)

{

cin>>a[i];

pre_a[i]=(pre_a[i-1]+a[i])%M;

}

for(int i=1; i<=n; i++)

{

cin>>b[i];

c[i]=(pre_a[i]*b[i])%M;

pre_c[i]=(pre_c[i-1]+c[i])%M;

pre_b[i]=(pre_b[i-1]+b[i])%M;

}

while(m--)

{

long long int x,l,r;

cin>>x>>l>>r;

long long int ans=0;

if(x<l)

{

long long int s1=(pre_c[r]-pre_c[l-1]+M)%M;

long long int s2=(pre_a[x]*((pre_b[r]-pre_b[l-1]+M)%M))%M;

ans=s1-s2;

}

else if(x>r)

{

long long int s3=pre_c[r]-pre_c[l-1];

long long int s4=pre_a[x]*(pre_b[r]-pre_b[l-1]);

ans=s4-s3;

}

else

{

long long int s1=(pre_c[x]-pre_c[l-1])%M;

long long int s2=(pre_a[x]*((pre_b[x]-pre_b[l-1]+M)%M))%M;

ans=s2-s1;

long long int s3=(pre_c[r]-pre_c[x-1])%M;

long long int s4=(pre_a[x]*((pre_b[r]-pre_b[x-1]+M)%M))%M;

ans+=s3-s4;

}

cout<<ans<<endl;

}

return 0;

}

用例通过率为 0%

why?

大佬捞

全部评论
oi
1 回复 分享
发布于 2024-06-11 17:30 四川

相关推荐

07-20 12:08
已编辑
江南大学 图像识别
机械牛马勇闯秋招:把校园经历里面做过的项目,大作业,课设,毕设啥的,扩写,写成具体的项目经历,自我评价缩写别占篇幅,不然这简历真没东西,初筛都过不了
点赞 评论 收藏
分享
这是全挂的意思吗
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务