线段树:竞赛数据结构的基石
无论是纯粹的数据结构题还是数据结构优化其他算法,线段树都是绕不开的一个东西。
线段树的基本思想事实上十分简单:分治。把大区间拆成小区间,能延迟操作就延迟操作,这就是线段树的基本思想。它解决的问题也很简单:区间查询,区间修改。
在数据结构题以外,我们依然可以见到线段树的身影,包括但不限于树剖维护树上问题、优化dp状态转移、优化dijkstra等。这些我们都将在下面见到例题。
当然,在面对一些其他问题时,线段树的功能就有些捉襟见肘了,这种时候我们通常会考虑另一个几乎万能的数据结构:平衡树。当然平衡树也不是真的万能,有些问题(例如在线带修改区间第k大)单独的平衡树和线段树都无法解决,于是我们又会请出重量级的数据结构:树套树。不过,这些都超出了我们现在的讨论范围。这篇文章的重心依然会放在线段树上。
2024/6/30大约 39 分钟