线段树&树状数组

学术版

@[hiuseues](/space/show?uid=47842) 这东西不是想懂就懂的,光看博文也没什么用。需要坚持学习。 我刚学会树状数组和线段树不到一个月,分享一下不一定成熟的经验。 至于学习资源,我不建议您只读一篇文章。多读几篇,找找异同,有助于加深理解。 树状数组模板 1 里面有一篇题解,质量不错。我当初是结合那篇题解、洛谷讲义、山东夏令营讲义学习的树状数组。 学会树状数组之后,一定不要太高兴。**不复习会忘的**。AC 两道模板之后,建议用树状数组做一道 A+B 和逆序对。如果您实力够强,可以试试 NOIP2017 D2T3(据说是树状数组题)。 您会发现,树状数组的实质就是**前缀和**。 如果学习过程中遇到困难,不妨拿出纸笔,画图。要是懒得自己画图,https://visualgo.net 是个不错的网站,善加利用它。 学习线段树之前,您要先对线段树有一个初步认识,知道它是干什么用的。请记住一句歌词:「线段树区间修改求出总量」。 线段树这种东西,代码量较长,不易调试。所以,一定要用良好的代码风格写线段树的代码。 说白了,线段树就三个操作(build、upadte、query)外加一个核心(lazy 标记)。请再记住一句歌词:「lazy 标记有没有清空」。将线段树的代码分成这几个部分写,每个部分主要都是对左右子树的**递归**操作,还是比较便于调试的。 线段树这东西确实比较难懂。不过多写几次板子,一定可以的。每次重写,可能都会遇到 Bug。尝试找出 Bug 并改正,会发现对线段树哪里理解不透。 过了线段树第一道模板题之后,建议做一下 P1198 [JSOI2008] 最大数。模板 2 和 P2023 [AHOI2009] 维护序列其实是重题。
by Anguei @ 2018-04-07 02:10:46


## @[yyfcpp](/space/show?uid=53062) 您太强了!!!
by Siyuan @ 2018-04-07 07:47:38


@[yyfcpp](/space/show?uid=53062) 为啥会忘啊(逃
by λᴉʍ @ 2018-04-07 07:49:56


@[yyfcpp](/space/show?uid=53062) 您太强啦
by МiсDZ @ 2018-04-07 07:55:30


@[yyfcpp](/space/show?uid=53062) 做一道$A+B$比较皮
by Kelin @ 2018-04-07 08:04:29


@[yyfcpp](/space/show?uid=53062) # 强啊
by M_sea @ 2018-04-07 08:23:27


树状数组就还会忘记?不就两行的事情233333
by iodwad @ 2018-04-07 08:27:30


@[M_sea](/space/show?uid=38370) 您坠强!
by iodwad @ 2018-04-07 08:28:04


@[ZCDHJ](/space/show?uid=24878) 我还真忘了。。。 另: 您太强啦
by M_sea @ 2018-04-07 08:33:06


线段树树状数组是什么?能吃吗?
by lrj124 @ 2018-04-07 08:46:03


| 下一页