进食线段树(hou ren)!(集合我踩过的所有坑。)
查看原帖
进食线段树(hou ren)!(集合我踩过的所有坑。)
222431
Atlantic_C929楼主2024/8/15 14:18

从2023/4/9到2024/3/30再到2024/8/15,我把这题写了5遍......

本人总结这里面我踩过的所有坑,希望帮助到各位。


注:我写的一共5个函数:build(建树),f(即懒标记push_down),add(加法),mul(乘法),ans(查询)。

其中mul和add极像,ans差不多,build有些区别,f别具一格。(所以复制黏贴......)

可能会有只有我自己会错的问题,看看就好。


1.不开long long见祖宗。包括scanf和printf里的%lld。

2.不mod见祖宗。该mod的mod,不该mod的不要乱mod。+=改mod后删+。

3.build里递归要(l,mid)及(mid+1,r),其他都是(l,r)。

4.4个函数里都要加修改pre的操作(我老是忘了)。

5.mul初始化及清零都是1,而add是0。

6.线段树t大小要是数组大小(n的数据范围)的4倍。(反正4倍肯定够就是了。)

7.t[p].r-t[p].1 +1,+1不能少。(就算算区间里包括几个数然后算懒标记那个。)

8.mul里add也要乘上。

f里:改pre->改mul->改add,要乘上mul->清零。

9.f里:p or 2p or 2p+1?

10.add里:num or t[p].add?


线段树真好吃。
2024/8/15 14:18
加载中...