C++でのFenwick木の実装方法


上記のコードは、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木で実行することができます。