谁来救救萌新的全WA线段树,板子题,悬赏两个关注

P3373 【模板】线段树 2

样例都过不了
by chen_z @ 2023-07-20 17:24:35


```cpp #include<bits/stdc++.h> #define int long long using namespace std; const int maxn=100000; int n,q,m; int a[maxn],w[maxn*4],lzy_mul[maxn*4],lzy_add[maxn*4]; void pushup(int u){ w[u]=(w[u*2]+w[u*2+1])%m;//<-- } void build(int u,int L,int R){ if(L==R){ w[u]=a[L]; return; } int M=(L+R)/2; build(u*2,L,M); build(u*2+1,M+1,R); lzy_mul[u]=1;//<-- pushup(u); } void maketag(int u,int L,int R,int x,int type){//int x if(type==1){ (lzy_add[u]*=x)%=m; (lzy_mul[u]*=x)%=m; (w[u]*=x)%=m; } else{ (lzy_add[u]+=x)%=m;//<-- (w[u]+=(R-L+1)*x)%=m; } } void pushdown(int u,int L,int R){ int M=(L+R)/2; maketag(u*2,L,M,lzy_mul[u],1); maketag(u*2,L,M,lzy_add[u],2); maketag(u*2+1,M+1,R,lzy_mul[u],1); maketag(u*2+1,M+1,R,lzy_add[u],2); lzy_mul[u]=1; lzy_add[u]=0; } bool InRange(int L,int R,int l,int r){ return (l<=L)&&(R<=r); } bool OutofRange(int L,int R,int l,int r){ return (l>R)||(r<L); } int query(int u,int L,int R,int l,int r){ if(InRange(L,R,l,r)){ return w[u]; } else if(!OutofRange(L,R,l,r)){ int M=(L+R)/2; pushdown(u,L,R); return (query(u*2,L,M,l,r)+query(u*2+1,M+1,R,l,r))%m; } else return 0; } void update(int u,int L,int R,int l,int r,int x,int type){ if(InRange(L,R,l,r)){ maketag(u,L,R,x,type); } else if(!OutofRange(L,R,l,r)){ int M=(L+R)/2; pushdown(u,L,R); update(u*2,L,M,l,r,x,type); update(u*2+1,M+1,R,l,r,x,type); pushup(u); } } main(){ cin>>n>>q>>m; for(int i=1;i<=n;i++)cin>>a[i]; build(1,1,n); for(int i=1;i<=q;i++){ int type,x,y,k; cin>>type; if(type==1||type==2){ cin>>x>>y>>k; update(1,1,n,x,y,k,type);//<-- } else{ cin>>x>>y; cout<<query(1,1,n,x,y)<<'\n';//<-- } } return 0; } ``` 70pts代码,错的地方都标出来了。剩下30pts应该是取模的问题,找了半天没找出来。
by tangyigeng @ 2023-07-20 19:06:09


@[tangyigeng](/user/654992) 哇,太感谢了,一直没看到
by chen_z @ 2023-07-21 19:11:56


@[tangyigeng](/user/654992) 两关了,是@CSQLYB和另外一个@TBClikeZT
by TBClikeZT @ 2023-07-21 19:14:19


@[tangyigeng](/user/654992) 谢谢谢谢%%%orzorz
by TBClikeZT @ 2023-07-21 19:15:36


@[tangyigeng](/user/654992) dalao我还是改不过,可能不是%的问题,能%的都%了,还是70
by chen_z @ 2023-07-21 20:00:00


@[tangyigeng](/user/654992) 凸(艹皿艹 )终于找到了,是 ```cpp main(){ ``` 的问题!!!!啊啊啊啊啊啊!!!
by chen_z @ 2023-07-21 21:39:05


|