刚学了这俩结构,写个文章纪念一下 查找 线段树 通过二分找所有被范围完全包含的组 树状数组 通过 i - lowbit(i) 向左上角移动 原理是负整数的补码特性 更新 线段树 从根寻找叶子,沿途+1 树状数组 通过 i + lowbit(i) 向右上角移动 实现 线段树 用struct来存储范围(l,r) 和sum , 构成一个二叉树 树状数组 直接用一个普通数组存储,f[i]代表其子节点与i的和 ( f[i]的子结点就是lowbit更新时会经过i的节点,直接看不出来)