这题很明显,就是要实现两种操作:区间修改和单点查询,是典型的数据结构裸题,可以用线段树解决。
因为题目没有太多好讲的,我们不妨先回顾一下线段树这个数据结构,最后再稍来点拨一下本题。
首先还是要回到本质,数据结构到底是什么?为什么 OI 的学习越到后面,要花一百多甚至几百行去编写一个数据结构?
我们来看 wikipedia 对数据结构的定义,“In computer science, a data structure is a particular(特殊的) way of organizing data in a computer so that it can be used efficiently(有效地).”
由此可见,数据结构是一种强有力的辅助手段,帮助我们更好地处理我们所拥有的数据,或在运算时大幅度提高效率。
效率这个词,在 OI 竞赛中实在是太重要了。因此也就引发了 OI 选手对数据结构的追求,以至于早就有人提出“程序=算法+数据结构”的概念。
再回到线段树来看。线段树是处理区间问题时的利器,可以参考 04 年国家集训队有两篇论文对此作了较详细的阐述。无论是单点修改、区间查询,区间修改、单点查询……线段树都可以在 O(lo