AcWing 242. 一个简单的整数问题

2023-05-24,,

给定长度为N的数列A,然后输入M行操作指令。

第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。

第二类指令形如“Q X”,表示询问数列中第x个数的值。

对于每个询问,输出一个整数表示答案。

#include<bits/stdc++.h>
#define N 1000000
using namespace std;
int a[N],b[N];
int n,m;
void add(int x,int y){for(;x<=n;x+=x&-x)a[x]+=y;}
int ask(int x)
{
int ans=0;
for(;x;x-=x&-x)ans+=a[x];
return ans;
}
int main()
{
cin>>n>>m;
long long last = 0, now;
for (int i=1;i<=n;i++)
{
scanf("%lld",&now);
add(i,now-last);
last=now;
}
for(int i=1;i<=m;i++)
{
char x;
cin>>x;
if(x=='C'){int a,b,c;cin>>a>>b>>c;add(a,c);add(b+1,-c);}
else{int y;cin>>y;cout<<ask(y)<<endl;}
}
return 0;
}

AcWing 242. 一个简单的整数问题的相关教程结束。

《AcWing 242. 一个简单的整数问题.doc》

下载本文的Word格式文档,以方便收藏与打印。