P163 A Simple Probrem with Integers
区間への加算と和の計算がO(log(n))できるセグメント木が良く分からなかったので、図に書いてみた。
(普通のセグメント木はある要素への加算と和の計算がO(log(n))である。)
上の図では、まずそれぞれの要素に{3,6,1,2,5,8,1,4}を加えた後、[1,6)に2を加算している。
また各節点の数字は、1つ目がdata、2つ目がdatbに対応している。
1つ目の木について
葉では全て一様に加えられているので、dataにその加えられた値が格納される。
葉以外の節点では全て一様でなく加えられているので、datbにその和が格納される。
2つ目の木について
節点[1,2),[2,4), [4,6)では一様に加えられているので、dataに2が加算される。
それらの節点の子には何もしない。
それらの親にあたる節点ではdatbが更新されている。