Skip to content
GabWiki
Search
K
GitHub
Appearance
GitHub
Menu
Return to top
On this page
Table of Contents for current page
前缀和
一维前缀和
前缀和也是可以用在异或运算上的
。
原数组下标从
0
开始:
定义:
s
[
i
]
=
a
[
0
]
+
a
[
1
]
+
.
.
.
+
a
[
i
−
1
]
=
∑
j
=
0
i
−
1
a
[
j
]
。
构造:
s
[
0
]
=
0
,
s
[
i
]
=
s
[
i
−
1
]
+
a
[
i
−
1
]
。
使用:
s
u
m
(
a
[
l
…
r
]
)
=
s
[
r
+
1
]
−
S
[
l
]
。
原数组下标从
1
开始:
定义:
s
[
i
]
=
a
[
1
]
+
a
[
2
]
+
.
.
.
+
a
[
i
]
=
∑
j
=
1
i
a
[
j
]
。
构造:
s
[
0
]
=
0
,
s
[
i
]
=
s
[
i
−
1
]
+
a
[
i
]
。
使用:
s
u
m
(
a
[
l
…
r
]
)
=
S
[
r
]
−
S
[
l
−
1
]
。
二维前缀和
矩阵横纵坐标均从
1
开始:
定义:
第
行
列
格
子
左
上
部
分
所
有
元
素
的
和
s
[
i
]
[
j
]
=
第
i
行
j
列
格
子
左
上
部
分
所
有
元
素
的
和
=
∑
x
=
1
i
(
∑
y
=
1
j
a
[
x
]
[
y
]
)
。
构造:
s
[
i
]
[
j
]
=
s
[
i
−
1
]
[
j
]
+
s
[
i
]
[
j
−
1
]
−
s
[
i
−
1
]
[
j
−
1
]
+
a
[
i
]
[
j
]
。
使用:以
(
x
1
,
y
1
)
为左上角,
(
x
2
,
y
2
)
为右下角的子矩阵的和为:
s
[
x
2
]
[
y
2
]
−
s
[
x
1
−
1
]
[
y
2
]
−
s
[
x
2
]
[
y
1
−
1
]
+
s
[
x
1
−
1
]
[
y
1
−
1
]
。