前缀和与差分
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前缀和与差分相关的知识,希望对你有一定的参考价值。
前缀和与差分
前言
本文只写公式,不证明。
下文中 d \\large d d数组均表示差分数组, a \\large a a数组均表示原数组, p r e \\large pre pre数组均表示前缀和数组,下面让我们 l e t ′ s g o \\large let's\\ \\ go let′s go
一维
d i = a i − a i − 1 a n = ∑ i = 1 n d i p r e n = ∑ i = 1 n a i = ∑ x = 1 n ∑ i = 1 x d i = ∑ i = 1 n d i × ( n − i + 1 ) \\large d_i=a_i-a_{i-1} \\\\ \\large a_n=\\sum\\limits_{i=1}^nd_i \\\\ \\large pre_n=\\sum\\limits_{i=1}^n a_i=\\sum\\limits_{x=1}^n\\sum\\limits_{i=1}^x d_i=\\sum\\limits_{i=1}^nd_i\\times (n-i+1) di=ai−ai−1an=i=1∑ndipren=i=1∑nai=x=1∑ni=1∑xdi=i=1∑ndi×(n−i+1)
差分维护区间修改
[
l
,
r
]
\\large [l,r]
[l,r]
d
l
+
=
x
,
d
r
+
1
−
=
x
\\large d_l+=x,d_{r+1}-=x
dl+=x,dr+1−=x
二维
d
i
,
j
=
a
i
,
j
−
a
i
−
1
,
j
−
a
i
,
j
−
1
+
a
i
−
1
,
j
−
1
a
i
,
j
=
d
i
,
j
+
d
i
−
1
,
j
+
d
i
,
j
−
1
−
d
i
−
1
,
j
−
1
=
∑
x
=
1
i
∑
y
=
1
j
d
x
,
y
p
r
e
i
,
j
=
a
i
,
j
+
p
r
e
i
−
1
,
j
+
p
r
e
i
,
j
−
1
−
p
r
e
i
−
1
,
j
−
1
=
∑
x
=
1
i
∑
y
=
1
j
a
x
,
y
=
∑
x
=
1
i
∑
y
=
1
j
∑
k
=
1
x
∑
l
=
1
y
a
k
,
l
s
u
m
o
f
s
u
b
r
e
c
t
a
n
g
l
e
{
x
1
≤
x
≤
x
2
,
y
1
≤
y
≤
y
2
}
=
p
r
e
x
2
,
y
2
−
p
r
e
x
1
−
1
,
y
2
−
p
r
e
x
2
,
y
1
−
1
+
p
r
e
x
1
−
1
,
y
1
−
1
\\large d_{i,j}=a_{i,j}-a_{i-1,j}-a_{i,j-1}+a_{i-1,j-1} \\\\ \\large a_{i,j}=d_{i,j}+d_{i-1,j}+d_{i,j-1}-d_{i-1,j-1}=\\sum\\limits_{x=1}^i\\sum\\limits_{y=1}^j d_{x,y} \\\\ \\large pre_{i,j}=a_{i,j}+pre_{i-1,j}+pre_{i,j-1}-pre_{i-1,j-1} \\\\ \\large =\\sum\\limits_{x=1}^i\\sum\\limits_{y=1}^ja_{x,y}=\\sum\\limits_{x=1}^i\\sum\\limits_{y=1}^j\\sum\\limits_{k=1}^x\\sum\\limits_{l=1}^ya_{k,l} \\\\ \\large sum\\ of\\ subrectangle\\{x_1\\le x\\le x_2,y_1\\le y\\le y_2\\} \\\\ \\large = pre_{x_2,y_2}-pre_{x_1-1,y_2}-pre_{x_2,y_1-1}+pre_{x_1-1,y_1-1}
di,j=ai,j−ai−1,j−ai,j−1+ai−1,j−1ai,j=di,j+di−1,j+di,j−1−di−1,j−1=x=1∑iy=1∑jdx,yprei,j=ai,j+prei−1,j+prei,j−1−prei−1,j−1=x=1∑iy=1∑jax,y=x=1∑iy=1∑j