打开/关闭搜索
搜索
打开/关闭菜单
通知
打开/关闭个人菜单
查看“前缀和”的源代码
来自吾萌百科
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
前缀和
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
对于一个给定的数列A,它的前缀和数列S的定义是:<math>S_i=\sum_{j=1}^i{A_j}</math> 你可以很简单的用递推来计算出一个数列的前缀和: <math> S_i=\begin{cases} A_1 &i=1 \\ S_{i-1}+A_i&i>1 \end{cases} </math> 一个部分和即数列A某个下标区间内的数的和,可表示为前缀和相减的形式:<math>sum(l,r)=\sum_{j=l}^r{A_j}=S_r-S_{l-1}</math> == 例子 == <syntaxhighlight lang="c" line> #define SIZE 100001 int S[SIZE]; void init(int* A, int n) { S[0] = A[0]; for (int i = 1; i < n; ++i) S[i] = S[i - 1] + A[i]; } int add(int l, int r) { return S[r] - S[l - 1]; } <syntaxhighlight> == 参考资料 == # 算法竞赛进阶指南,李煜东,21~22页 [[Category:计算机]]
返回
前缀和
。