样例过了,测试点只有30分,求调!!!

P3373 【模板】线段树 2

@[LYBT](/user/933604) 这样: ```cpp inline void push_down(int k,int l,int r){ int mid=(l+r)>>1; f[k*2]=(v2[k]*f[k*2]+v1[k]*(mid-l+1))%m; f[k*2+1]=(v2[k]*f[k*2+1]+v1[k]*(r-mid))%m; v2[k*2]=(v2[k*2]*v2[k])%m; v2[k*2+1]=(v2[k*2+1]*v2[k])%m; v1[k*2]=(v1[k*2]*v2[k]+v1[k])%m; v1[k*2+1]=(v1[k*2+1]*v2[k]+v1[k])%m; v2[k]=1; v1[k]=0; } ``` 乘法标记下沉的时候要把儿子的加法标记也乘以下
by Skeleton_Huo @ 2023-08-13 11:30:09


@[Skeleton_Huo](/user/324632) 答案不太对呢,结果样例过不了 ```cpp inline void push_down(int k,int l,int r){ int mid=(l+r)>>1; f[k*2]=(v2[k]*f[k*2]+v1[k]*(mid-l+1))%m; f[k*2+1]=(v2[k]*f[k*2+1]+v1[k]*(r-mid))%m; v2[k*2]=((v2[k*2]+v1[k*2])*v2[k])%m; v2[k*2+1]=((v2[k*2+1]+v1[k*2+1])*v2[k])%m; v1[k*2]=(v1[k*2]+v1[k])%m; v1[k*2+1]=(v1[k*2+1]+v1[k])%m; v2[k]=1; v1[k]=0; } ```
by LYBT @ 2023-08-13 21:50:52


@[LYBT](/user/933604) 但是我这边是能过样例的,甚至能AC https://www.luogu.com.cn/record/120805433
by Skeleton_Huo @ 2023-08-14 14:04:06


@[LYBT](/user/933604) 你给的那段好像,下沉的有问题,v2[k*2]和v2[k*2+1]不用乘,但是v1要
by Skeleton_Huo @ 2023-08-14 14:06:58


@[Skeleton_Huo](/user/324632) 哦谢谢了,是我没理解对,一关,谢谢相助
by LYBT @ 2023-08-14 14:30:20


|