补全:大数组开到全局
补全:前缀和数组有 2 × 10^6 个 long long(16 MB)。开在函数里会把栈撑爆(程序直接崩溃),要把它挪到函数外面。补全后输出 1 到 2 × 10^6 的和。 (本题用 g++ -std=c++17 -O0 编译。)
补全:线段树开 4n
补全:递归写的线段树,节点编号最大能到接近 4n,数组开 2n 会越界(程序会被 at() 当场拦下)。补全后输出 10 个数的区间和。 (本题用 g++ -std=c++17 -O0 编译。)
树状数组求区间和
用树状数组求 a[l..r](0 下标、闭区间)的和:bit_query(tree, 【0】) - bit_query(tree, l)。 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、b
树状数组天然支持什么
第 1 步:求第 3 到第 7 个的和 第 2 步:前缀到 7:跳三格就够 第 3 步:前缀到 2:只要一格 第 4 步:两个前缀一减就是区间和 1 2 3 4 5 6 7 树状数组天然支持【0】。 本节模型:lowbit(x) = x &
lowbit 在树状数组里表示
在树状数组里,lowbit(i) 表示【0】。 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i) 求前缀和 a[0..i-1]。
两次前缀求区间和
运行下面这段程序: 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i) 求前缀和 a[0..i-1]。 #include <algorithm>
另一组数的前缀和
运行下面这段程序: 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i) 求前缀和 a[0..i-1]。 #include <algorithm>
补全:查询的初值
补全 bit_query:累加器从 0 开始。补全后输出前 3 个的和。 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i) 求前缀和 a[0..i-1]。
补全:查询的循环条件
补全 bit_query:i > 0 才继续。补全后输出第 1 个数。 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i) 求前缀和 a[0..i-1
补全:建树时往父区间跳
补全 bit_build:父区间下标是 j = i + lowbit(i)。补全后输出前 5 个的和。 本节模型:lowbit(x) = x & (-x)、bit_build(a) 建树状数组、bit_query(tree, i)