mooyyu

B1 - 前缀和与差分

c++11 basic

前缀和

template< class type >
class partial_sum {
public:
	type ar[maxn + 1];
	void init(int n) {
		for (int i = 1; i <= n; i++)
			ar[i] += ar[i - 1];
	}
	type solve(int l, int r) { return ar[r] - ar[l - 1]; }
};

差分

template< class type >
class adj_diff {
public:
	type ar[maxn + 2];
	void init(int n) {
		for (int i = n; i >= 1; --i)
			ar[i] -= ar[i - 1];
	}
	void modify(int l, int r, type c) {
		ar[l] += c;
		ar[r + 1] -= c;
	}
};