セグメント木とフェンウィック木(Binary Indexed Tree、BIT)はどちらも、範囲クエリ(例えば[l, r]の合計)とポイント更新を**O(log n)**で処理します。これは単純なスキャンのO(n)やプレフィックス合計配列の更新O(n)と比較して高速です。
これらが解く問題
text
Array + many "sum of range [l,r]" and "update index i" calls:
naive prefix sums: query O(1) but UPDATE is O(n)
segment/Fenwick: query O(log n) AND update O(log n)
