上記のコードは、Fenwick木を実装するための基本的なクラスです。tree
という名前のベクターを使用して要素を保持し、update
関数で要素を更新し、query
関数で範囲の合計を計算します。
以下は、Fenwick木の使用例です。
int main() {
// Fenwick木の初期化
FenwickTree fenwick(6);
// 要素の更新
fenwick.update(1, 2);
fenwick.update(3, 1);
fenwick.update(5, 5);
// 範囲の合計を計算
int sum1 = fenwick.query(2); // インデックス2までの要素の合計
int sum2 = fenwick.query(6); // インデックス6までの要素の合計
return 0;
}
このコードでは、Fenwick木の初期化後に要素を更新し、query
関数を使用して範囲の合計を計算しています。
以上が、C++でのFenwick木の実装方法と使用例です。このコードを使用することで、効率的に範囲の合計を計算することができます。もちろん、他の操作(要素の追加や削除など)もFenwick木で実行することができます。