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-10 11:33
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 15:08
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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