萌新求大佬差错!WA&TLE 3个点QAQ

P3373 【模板】线段树 2

红名大佬%%%%%
by JK_LOVER @ 2020-04-24 18:22:35


@[JK_LOVER](/user/227824) 大佬帮我看看吧QAQ
by Diamiko @ 2020-04-24 18:25:19


```cpp #include<bits/stdc++.h> using namespace std; #define ll long long #define int long long inline int read() { char c;int res=0,flag=1; for(;!isdigit(c);c=getchar())if(c=='-')flag=-1; for(;isdigit(c);c=getchar())res=(res<<3)+(res<<1)+c-'0'; return flag*res; } const int N=1e5+10; int n,m,t,x,y,p; ll sum[N<<2],mul[N<<2],add[N<<2],a[N]; void build(int i,int l,int r) { mul[i]=1; if(l==r) { sum[i]=a[l]; return; } int mid=l+r>>1; build(i<<1,l,mid); build(i<<1|1,mid+1,r); sum[i]=(sum[i<<1]%p+sum[i<<1|1]%p)%p; } void Mul(int i,int k) { mul[i]=(mul[i]%p)*(k%p)%p; add[i]=(add[i]%p)*(k%p)%p; sum[i]=(sum[i]%p)*(k%p)%p; } void Add(int i,int l,int r,int k) { add[i]=(add[i]%p+k%p)%p; sum[i]=(sum[i]%p+(k%p)*((r-l+1)%p)%p)%p; } void pushdown(int i,int l,int r,int mid) { if(mul[i]!=1) { Mul(i<<1,mul[i]); Mul(i<<1|1,mul[i]); mul[i]=1; } if(add[i]) { Add(i<<1,l,mid,add[i]); Add(i<<1|1,mid+1,r,add[i]); add[i]=0; } } void modify_mul(int i,int l,int r,int x,int y,int val) { if(x<=l&&r<=y)return Mul(i,val); int mid=l+r>>1; pushdown(i,l,r,mid); if(x<=mid)modify_mul(i<<1,l,mid,x,y,val); if(y>mid) modify_mul(i<<1|1,mid+1,r,x,y,val); sum[i]=(sum[i<<1]%p+sum[i<<1|1]%p)%p; } void modify_add(int i,int l,int r,int x,int y,int val) { if(x<=l&&r<=y)return Add(i,l,r,val); int mid=l+r>>1; pushdown(i,l,r,mid); if(x<=mid)modify_add(i<<1,l,mid,x,y,val); if(y>mid) modify_add(i<<1|1,mid+1,r,x,y,val); sum[i]=(sum[i<<1]%p+sum[i<<1|1]%p)%p; } ll query(int i,int l,int r,int x,int y) { if(x<=l&&r<=y)return sum[i]; int mid=l+r>>1; pushdown(i,l,r,mid); ll ans=0; if(x<=mid)ans=(ans%p+query(i<<1,l,mid,x,y)%p)%p; if(y>mid)ans=(ans%p+query(i<<1|1,mid+1,r,x,y)%p)%p; return ans; } signed main() { n=read(),m=read(),p=read(); for(int i=1;i<=n;i++) { a[i]=read(); } build(1,1,n); for(int i=1;i<=m;i++) { t=read(),x=read(),y=read(); if(t==1) { modify_mul(1,1,n,x,y,read()); } else if(t==2) { modify_add(1,1,n,x,y,read()); } else { printf("%lld\n",query(1,1,n,x,y)); } } return 0; } ```
by JK_LOVER @ 2020-04-24 18:25:20


没开long long
by JK_LOVER @ 2020-04-24 18:25:36


@[弑魂丶琉璃花P](/user/203102)
by JK_LOVER @ 2020-04-24 18:25:55


@[JK_LOVER](/user/227824) 啊?是这样吗?谢谢大佬,我去试试……
by Diamiko @ 2020-04-24 18:29:26


@[JK_LOVER](/user/227824) 真的对了……无语……谢谢大佬!不过不开longlongWa就算了,为啥还会TLE呢……
by Diamiko @ 2020-04-24 18:32:11


|