CSPJ 教学总结:树状数组
树状数组(Binary Indexed Tree)是一种用于高效处理动态序列单点更新与区间求和问题的数据结构。其核心思想是利用二进制表示和 lowbit 操作,构建一个辅助数组,将前缀和查询与单点更新的时间复杂度均优化至 O(log N)。文章从暴力解法的瓶颈出发,逐步剖析 lowbit 函数的原理与实现、树状数组的结构定义、求和与更新操作的具体步骤,并说明了如何通过前缀和数组将初始化复杂度降至 O(N)。进一步,文章阐述了每个树状数组元素所管辖的区间范围及其在更新与查询过程中的变化规律。此外,还介绍了树状数组与差分数组结合以处理区间更新问题、二维树状数组的扩展,以及利用树状数组求解逆序对数量的应用场景与离散化处理技巧。