This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "dp/CumulativeSum.hpp"
1次元の累積和を構築する。長さ $N$ の数列に対して、前計算 $O(N)$ の上で区間の和を $O(1)$ で求めることができる。
CumulativeSum<T>(vector<T> a)
長さ n = a.size()
の数列に対して累積和を構築する。
T
: データの型。群の代数構造を満たす必要がある。(1) T cum.sum(int l)
(2) T cum.sum(int l, int r)
#pragma once
template <class T>
class CumulativeSum {
private:
int siz;
vector<T> s;
public:
CumulativeSum() {}
CumulativeSum(vector<T> &a) {
siz = a.size();
s.resize(siz + 1, 0);
for (int i = 0; i < siz; i++) {
s[i + 1] = s[i] + a[i];
}
}
T sum(int r) {
return s[r];
}
T sum(int l, int r) {
return s[r] - s[l];
}
};
#line 2 "dp/CumulativeSum.hpp"
template <class T>
class CumulativeSum {
private:
int siz;
vector<T> s;
public:
CumulativeSum() {}
CumulativeSum(vector<T> &a) {
siz = a.size();
s.resize(siz + 1, 0);
for (int i = 0; i < siz; i++) {
s[i + 1] = s[i] + a[i];
}
}
T sum(int r) {
return s[r];
}
T sum(int l, int r) {
return s[r] - s[l];
}
};