まず、セグ木自体は難しいものではないので、変な先入観は無くしましょう。 以下は、再帰の知識がなくても読めるように心がけます。 「何から始めたらいいかわからない」という人は、とりあえず最初に述べるセグ木を理解するところから始めるといいと思います。 導入 次の操作ができる配列だと見なせます。 長さ \(n\) で初期化する \(i\) 番目の要素の値を \(x\) にする \(l\) 番目から \(r\) 番目までの和を求める 初期化は \(\Theta(n)\) 時間で、残りは \(O(\log(n))\) 時間です。実装によっては区間和は \(O(\log(r-l))\) 時間だったりします。 実装 長さ \(2n\) の配列 \(a[2n]\) を用意して、\(a[i]\) (\(1\le i\lt n\)) を \(a[2i]\) と \(a[2i+1]\) の親と見なす木を考えます。