Loading docs/basic/prefix-sum.md +5 −3 Original line number Diff line number Diff line ## 前缀和 前缀和是一种较为简单的算法,可以大大减少时间复杂度。我们可以简单理解为“数列的前 n 项的和”。下面我们用一个例题来了解一下前缀和的主要思路。 前缀和是一种重要的预处理,能大大降低查询的时间复杂度。我们可以简单理解为“数列的前 n 项的和”。 !!! 例题 有 N 个的正整数放到数组 A 里,现在要求一个新的数组 B,新数组的第 i 个数 B[i] 是原数组 A 第 0 到第 i 个数的和。 Loading Loading @@ -49,11 +49,13 @@ int main() { 首先, `B[0] = A[0];` ,前缀和数组的第一项和原数组的第一项是相等的。 `B[i] = B[i-1] + A[i]` 相信大家也能理解这个式子。意思就是:前缀和数组的第 i 项等于数组 A 的 0 到 i-1 项的和加数组 A 的第 i 项。 `B[i] = B[i-1] + A[i]` 意思就是:前缀和数组的第 i 项 = 原数组的 0 到 i-1 项的和 + 原数组的第 i 项。 ### 习题 - [洛谷 U53525 前缀和(例题)](https://www.luogu.org/problemnew/show/U53525) - [洛谷 U69096 前缀和的逆](https://www.luogu.org/problemnew/show/U69096) - [AT2412 最大の和](https://www.luogu.org/problemnew/show/AT2412) ### 参考 Loading Loading
docs/basic/prefix-sum.md +5 −3 Original line number Diff line number Diff line ## 前缀和 前缀和是一种较为简单的算法,可以大大减少时间复杂度。我们可以简单理解为“数列的前 n 项的和”。下面我们用一个例题来了解一下前缀和的主要思路。 前缀和是一种重要的预处理,能大大降低查询的时间复杂度。我们可以简单理解为“数列的前 n 项的和”。 !!! 例题 有 N 个的正整数放到数组 A 里,现在要求一个新的数组 B,新数组的第 i 个数 B[i] 是原数组 A 第 0 到第 i 个数的和。 Loading Loading @@ -49,11 +49,13 @@ int main() { 首先, `B[0] = A[0];` ,前缀和数组的第一项和原数组的第一项是相等的。 `B[i] = B[i-1] + A[i]` 相信大家也能理解这个式子。意思就是:前缀和数组的第 i 项等于数组 A 的 0 到 i-1 项的和加数组 A 的第 i 项。 `B[i] = B[i-1] + A[i]` 意思就是:前缀和数组的第 i 项 = 原数组的 0 到 i-1 项的和 + 原数组的第 i 项。 ### 习题 - [洛谷 U53525 前缀和(例题)](https://www.luogu.org/problemnew/show/U53525) - [洛谷 U69096 前缀和的逆](https://www.luogu.org/problemnew/show/U69096) - [AT2412 最大の和](https://www.luogu.org/problemnew/show/AT2412) ### 参考 Loading