链接:https://www.nowcoder.com/acm/contest/135/I
来源:牛客网
Apojacsleam喜欢数组。
他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作:
操作一:将a[L]-a[R]内的元素都加上P
操作二:将a[L]-a[R]内的元素都减去P
输入共M+3行:
第一行两个数,n,M,意义如“题目描述”
第二行n个数,描述数组。
第3-M+2行,共M行,每行四个数,q,L,R,P,若q为1则表示执行操作2,否则为执行操作1
第4行,两个正整数l,r
一个正整数,为a[l]-a[r]内的元素之和
1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 const int maxn=1000005;
5 int n,m,tl,tr,q,l,r,p;
6 int a[maxn],add[maxn];
7
8 int main()
9 {
10 memset(add,0,sizeof(add));
11 scanf("%d%d",&n,&m);
12 for(int i=1;i<=n;i++)
13 scanf("%d",a+i);
14 for(int i=1;i<=m;i++)
15 {
16 scanf("%d%d%d%d",&q,&l,&r,&p);
17 if(q==1)
18 {
19 add[l]-=p;
20 add[r+1]+=p;
21 }
22 else
23 {
24 add[l]+=p;
25 add[r+1]-=p;
26 }
27 }
28 scanf("%d%d",&tl,&tr);
29 ll sum=0;
30 for(int i=1;i<=n;i++)
31 add[i]+=add[i-1];
32 for(int i=tl;i<=tr;i++)
33 sum+=a[i]+add[i];
34 printf("%lld\n",sum);
35 return 0;
36 }
原文:https://www.cnblogs.com/zjl192628928/p/9381501.html