Kyopro Library
読み取り中…
検索中…
一致する文字列を見つけられません
rolling_hash_2d.hpp
[詳解]
1
/// @attention 未verify
2
struct
RollingHash2D
{
3
RollingHash2D
()=
default
;
4
vector
<
vector
<
Hash
>>
hash
;
5
6
RollingHash2D
(
const
vector<string>& s) {
7
int
h=s.size(), w=s[0].size();
8
hash=vector<vector<Hash>>(h,vector<Hash>(w+1));
9
for
(
int
i=1; i<=h; i++)
for
(
int
j=1; j<=w; j++) {
10
hash[i][j]=Hash(s[i-1][j-1]).shift(i-1).shift(j-1)+hash[i][j-1]+hash[i-1][j]-hash[i-1][j-1];
11
}
12
}
13
14
Hash
get
(
int
l,
int
r,
int
u,
int
d) {
15
Hash ret=hash[r][d]-hash[l][d]-hash[r][u]+hash[l][u];
16
ret=ret.shift(-l).shift(-u);
17
return
ret;
18
}
19
};
RollingHash2D
Definition
rolling_hash_2d.hpp:2
RollingHash2D::hash
vector< vector< Hash > > hash
Definition
rolling_hash_2d.hpp:4
RollingHash2D::RollingHash2D
RollingHash2D()=default
RollingHash2D::RollingHash2D
RollingHash2D(const vector< string > &s)
Definition
rolling_hash_2d.hpp:6
RollingHash2D::get
Hash get(int l, int r, int u, int d)
Definition
rolling_hash_2d.hpp:14
string
rolling_hash_2d.hpp
構築:
1.13.2