从去年(2023)4.9到今年3.30,我终于过了这题
。
踩坑无数
(于是过了的我在家里大喊大叫把我家猫猫狗狗吓到了)
总结一下我踩坑踩在哪里了:
1.long long
你就索性写完程序,shift+ctrl+f把int全改long long,然后把main改回int
本人不喜欢用#define ll long long
scanf和printf里面改%lld!!!
2.mod
记得所有该mod(或者说能mod)的运算后面全部%mod
3.+=和=
有这么一句话:
t[p].add+=z;
不是要加mod嘛,于是我不小心写成了:
t[p].add+=(t[p].add+z)%mod;
但其实应该是:
t[p].add=(t[p].add+z)%mod;
这救了我30分
4.顺序
这东西直接导致我从30->100
具体就在懒标记下放的那个函数里面
顺序应该是:
改值->下放mul->下放add->mul=1->add=0
顺序千万不能错
(本人码风抽象,要看代码的去题解里看!)
写线段树不易,请再接再厉!