现在给你一个长度为 n 数组 f[n],q 次操作,每次查询 l 到 r 的区间和(1\le l\le r\le n),n,q \le {10}^5,怎么做?
直接暴力做是 O(n^2) 的,不可取。
如何优化时间复杂度呢?
这样我们引入了前缀和数组 pre[n]。
这里 pre[1]=f[1],pre[i]=pre[i-1]+f[i](i\ge 2),意思是 pre 数组是 f 数组的前缀累加和。
这样就简单了,查询 l 到 r 的区间和是查询 pre[r]-pre[l-1] 就可以了,单次查询时间复杂度 O(1),总时间复杂度就是 O(n+q)。