本题修改和查找是分开的,故可以先处理修改再查询,用前缀和即可。
#include <stdio.h>
int sum[1000005]={0};
int main(){
int n,c,q,a,b,e;
scanf("%d %d %d",&n,&c,&q);
while(c--){
scanf("%d %d %d",&a,&b,&e);
sum[a-1]+=-e;
sum[b]+=e;
}
for(int i=n;i>0;i--){
sum[i]+=sum[i+1];
}
sum[0]=0;
for(int i=1;i<=n;i++){
sum[i]+=sum[i-1];
sum[i]%=10003;
}
while(q--){
scanf("%d %d",&a,&b);
printf("%d\n",(sum[b]-sum[a-1]+10003)%10003);
}
return 0;
}
本文详细解析了前缀和算法的实现过程,通过一个具体的代码示例,展示了如何使用前缀和来处理数组的修改和查询操作。适用于解决大规模数据集上的区间修改和查询问题,是算法竞赛和数据处理中常用的技术。
661

被折叠的 条评论
为什么被折叠?



