这题蒟蒻调了半天没调出来,因为是xxs所以太弱请谅解一下。
有大佬可以帮我看一下吗,还是nz跪谢(假的,谢谢大佬。
代码:
#include<bits/stdc++.h>
using namespace std;
int i,n,m,x,y,z,t,id,ans,f[10005][10005],a[100005],q[100005];
int lowbit(int x)
{
return x&(-x);
}
int s(int k,int id)
{
int ans=0;
for(;id;id-=lowbit(id)) ans+=f[k][id];
return ans;
}
int sum(int id)
{
return (id+1)*s(0,id)-s(i,id);
}
void change(int k,int id,int v)
{
for(;id=0;id+=lowbit(id)) f[k][id]+=v;
}
int main()
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
q[i]=q[i-1]+a[i];
}
for(i=1;i<=m;i++)
{
scanf("%d",t);
if(t==1)
{
scanf("%d%d%d",&x,&y,&z);
change(0,x,z);
change(1,x,x*z);
change(0,y+1,-z);
change(1,y+1,(y+1)*(-z));
}
else
{
scanf("%d%d",&x,&y);
ans=sum(y)-sum(x-1);
printf("%d\n",ans+q[y]-q[x-1]);
}
}
return 0;
}