详解在https://blog.youkuaiyun.com/jkrj02/article/details/81104913
这里只放代码
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
int a[700000],f[700000],n,m,x,y,z,b;
int lowbit(int x)
{
return x&(-x);
}
void xiugai(int x,int k)
{
while(x<=n)
{
f[x]+=k;
x+=lowbit(x);
}
}
int findsum(int x)
{
int s=0;
while(x)
{
s+=f[x];
x-=lowbit(x);
}
return s;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
xiugai(i,a[i]-a[i-1]);
}
while(m--)
{
cin>>x;
if(x==2)
{
scanf("%d",&y);
printf("%d\n",findsum(y));
}
else if(x==1)
{
scanf("%d %d %d",&y,&z,&b);
xiugai(y,b);
xiugai(z+1,-b);
}
}
return 0;
}
直接抄什么的反正自己害自己我就不管了