Kyopro Library
読み取り中…
検索中…
一致する文字列を見つけられません
cumulative_sum_2d.hpp
[詳解]
1
#
include
"../../kyopro_library/template.hpp"
2
3
/// @brief 2次元累積和
4
/// @tparam T 群
5
template
<
typename
T>
6
struct
CumulativeSum2D
{
7
CumulativeSum2D
()=
default
;
8
9
/// @brief v から2次元累積和を構築する
10
template
<
typename
U>
11
CumulativeSum2D
(
const
vector<vector<U>>& v) {
12
n=v.size(),m=v.front().size();
13
dat=vector<vector<T>>(n+1,vector<T>(m+1,T(0)));
14
for
(
int
i=1; i<=n; i++)
for
(
int
j=1; j<=m; j++) {
15
dat[i][j]=v[i-1][j-1]+dat[i][j-1]+dat[i-1][j]-dat[i-1][j-1];
16
}
17
}
18
19
/// @brief 矩形領域 [l, r) × [u, d) の和を求める
20
T
sum
(
int
l,
int
r,
int
u,
int
d) {
21
return
dat[r][d]-dat[l][d]-dat[r][u]+dat[l][u];
22
}
23
24
private
:
25
int
n,m;
26
vector<vector<T>> dat;
27
};
CumulativeSum2D
2次元累積和
Definition
cumulative_sum_2d.hpp:6
CumulativeSum2D::CumulativeSum2D
CumulativeSum2D(const vector< vector< U > > &v)
v から2次元累積和を構築する
Definition
cumulative_sum_2d.hpp:11
CumulativeSum2D::sum
T sum(int l, int r, int u, int d)
矩形領域 [l, r) × [u, d) の和を求める
Definition
cumulative_sum_2d.hpp:20
CumulativeSum2D::CumulativeSum2D
CumulativeSum2D()=default
data_structure
cumulative_sum_2d.hpp
構築:
1.13.2