求助

P3372 【模板】线段树 1

@[optmize_2](/space/show?uid=224978) 感觉你的q函数应该写挂了
by Mystery_Sky @ 2019-09-11 19:39:39


```c++ if(mid>nr) ret+=q(nl,nr,mid+1,rr,r(id)); ``` 符号反了吧
by Mystery_Sky @ 2019-09-11 19:40:47


~~@[optmize_2](/space/show?uid=224978) 是不是你的build写错了~~
by pzc2004 @ 2019-09-11 19:40:53


第一,数组开1000找死 第二,不开longlong找死 第三, ```cpp if(l==r){t[id]=a[ll];return ;} ``` 您的l和r是啥
by ix35 @ 2019-09-11 19:41:19


@[Mystery_Sky](/space/show?uid=115383) ++
by optimize_2 @ 2019-09-11 19:41:37


@[optmize_2](/space/show?uid=224978) 三年OI一场空,不开四倍见祖宗
by pzc2004 @ 2019-09-11 19:42:08


@[ix35_](/space/show?uid=113546) 我这个就是调试一下
by optimize_2 @ 2019-09-11 19:42:33


@[optmize_2](/space/show?uid=224978) ~~催更~~树状数组 ```cpp #include<cstdio> #include<algorithm> using namespace std; int n,a[100001]; long long C[100001],C2[100001]; inline int lowbit(int v){ return v&(-v); } void modify(int ID,int v){ for(int i=ID;i<=n;i+=lowbit(i)) C[i]+=v,C2[i]+=ID*v; } long long getans(int v){ long long ans=0,ans2=0; for(int i=v;i;i-=lowbit(i)) ans+=(v+1)*C[i],ans2+=C2[i]; return ans-ans2; } int main(){ int m,cmd,x,y,k; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) modify(i,a[i]-a[i-1]); while(m--){ scanf("%d",&cmd); if(cmd^2) scanf("%d%d%d",&x,&y,&k),modify(x,k),modify(y+1,-k); else scanf("%d%d",&x,&y),printf("%lld\n",getans(y)-getans(x-1)); } return 0; } ```
by qbu666666 @ 2019-09-11 20:01:37


~~催更《犇犇报》~~
by 紫陰花 @ 2019-09-11 20:02:33


@[qbu666666](/space/show?uid=157598) 我是来学线段树的qwq
by optimize_2 @ 2019-09-11 20:03:07


| 下一页