60分,WA#4567,开了long long

P3372 【模板】线段树 1

@[caoxuanming](/user/148812) ~~你可以输中量或参解改~~
by KSA_Khinomov @ 2021-08-22 20:04:54


@[caoxuanming](/user/148812) ```cpp #include<bits/stdc++.h> #define int long long #define ctjer_si_ma signed main() using namespace std; const int N=1e6; int sum[4*N],ma[4*N] ,a[4*N],q,n,op,x,y,v,l,r,add[4*N]; void pushdown(int p,int l,int r){ if(add[p]==0)return; int mid=l+(r-l)/2; sum[p*2]+=(mid-l+1)*add[p]; add[p*2]+=add[p]; sum[p*2+1]+=(r-mid)*add[p]; add[p*2+1]+=add[p]; add[p]=0; } void build(int p,int l,int r){ add[p]=0; if(l==r){ sum[p]=a[l]; return; } int mid=l+(r-l)/2; build(p*2,l,mid); build(p*2+1,mid+1,r); sum[p]=sum[p*2]+sum[p*2+1]; } void modify(int p,int l,int r,int x,int y,int v){ if(y<l||x>r)return; if(x<=l&&r<=y){ sum[p]+=(r-l+1)*v; add[p]+=v; return; } pushdown(p,l,r); int mid=l+(r-l)/2; modify(p*2,l,mid,x,y,v); modify(p*2+1,mid+1,r,x,y,v); sum[p]=sum[p*2]+sum[p*2+1]; } int query(int p,int l,int r,int x,int y){ if(r<x||l>y)return 0; if(x<=l&&r<=y){ return sum[p]; } pushdown(p,l,r); int mid=l+(r-l)/2; return query(p*2,l,mid,x,y)+query(p*2+1,mid+1,r,x,y); } ctjer_si_ma{ cin>>n>>q; for(int i=1;i<=n;i++)scanf("%lld",&a[i]); build(1,1,n); for(int i=1;i<=q;i++){ scanf("%lld",&op); if(op==1){ scanf("%lld%lld%lld",&x,&y,&v); modify(1,1,n,x,y,v); }else{ scanf("%lld %lld",&l,&r); printf("%lld\n",query(1,1,n,l,r)); } } return 0; } ```
by KSA_Khinomov @ 2021-08-22 20:07:04


```cpp #include<bits/stdc++.h> #define int long long #define ctjer_si_ma signed main() using namespace std; const int N=1e6; int sum[4*N],ma[4*N] ,a[4*N],q,n,op,x,y,v,l,r,add[4*N]; void pushdown(int p,int l,int r){ if(add[p]==0)return; int mid=l+(r-l)/2; sum[p*2]+=(mid-l+1)*add[p]; add[p*2]+=add[p]; sum[p*2+1]+=(r-mid)*add[p]; add[p*2+1]+=add[p]; add[p]=0; } void build(int p,int l,int r){ add[p]=0; if(l==r){ sum[p]=a[l]; return; } int mid=l+(r-l)/2; build(p*2,l,mid); build(p*2+1,mid+1,r); sum[p]=sum[p*2]+sum[p*2+1]; } void modify(int p,int l,int r,int x,int y,int v){ if(y<l||x>r)return; if(x<=l&&r<=y){ sum[p]+=(r-l+1)*v; add[p]+=v; return; } pushdown(p,l,r); int mid=l+(r-l)/2; modify(p*2,l,mid,x,y,v); modify(p*2+1,mid+1,r,x,y,v); sum[p]=sum[p*2]+sum[p*2+1]; } int query(int p,int l,int r,int x,int y){ if(r<x||l>y)return 0; if(x<=l&&r<=y){ return sum[p]; } pushdown(p,l,r); int mid=l+(r-l)/2; return query(p*2,l,mid,x,y)+query(p*2+1,mid+1,r,x,y); } ctjer_si_ma{ cin>>n>>q; for(int i=1;i<=n;i++)scanf("%lld",&a[i]); build(1,1,n); for(int i=1;i<=q;i++){ scanf("%lld",&op); if(op==1){ scanf("%lld%lld%lld",&x,&y,&v); modify(1,1,n,x,y,v); }else{ scanf("%lld %lld",&l,&r); printf("%lld\n",query(1,1,n,l,r)); } } return 0; }
by wtw841103 @ 2021-08-22 21:12:05


~~这是代码,正确代码~~
by wtw841103 @ 2021-08-22 21:13:08


|