動機
- 1次元累積和クラスはよく使っているため
- 2次元累積和を使う問題と出会ったため
Code
struct AccSum2D{
VV Ac;
ll W;
ll H;
AccSum2D(){}
AccSum2D(VV &A){
H = A.size();
W = A[0].size();
Ac.resize(H+1, VI(W+1));
rep(i, H){
rep(j, W){
Ac[i+1][j+1] = A[i][j];
}
}
rep(i, H+1){
rep(j, W){
Ac[i][j+1] += Ac[i][j];
}
}
rep(x, W+1){
rep(y, H){
Ac[y+1][x] += Ac[y][x];
}
}
}
ll sum(ll a, ll b, ll c, ll d){
a++; b++; c++; d++;
return Ac[c][d] - Ac[a-1][d] - Ac[c][b-1] + Ac[a-1][b-1];
}
};
verified
- Maximum Sum Sequence II
- C - Nuske vs Phantom Thnook
- D - Checker
- A - 惑星探査 (Planetary Exploration)
- B - チョコレート
- 611C - New Year and Domino
- D - AtCoder Express 2
- D - Pond
- 081-Friendly Group(★5)(提出が見れるのは7/11 19:00~)
- D - Tile Pattern
tute san ver
3次元 三次元 累積和