Closed habara-k closed 4 years ago
cc @kanra824
クエリが更新のセグ木を別に作るということ?
別ではなく、上書きしようかなと思っています(更新だけでも、加算がsegt.update(i, segt[i] + x)
でできるので)
やりたいことはわかったけど、面倒な演算を載せたいときにupdateのたびにいちいち書かなきゃいけなくなってめちゃくちゃ面倒になりそう 変更する理由に対してデメリットが大きすぎる気がします
いやその演算は別で関数として定義すればいいか それもうセグ木の中にしまっておけばよくない?
確かに面倒な演算は大変ですね...
LazySegmentTreeのg(M, OM)
と区別したいので、せめて名前だけでも変えたいんですけどどうですか(例えばupdateのu
とか)
もしかしてこのg
って一点更新しかないLazySegmentTree
のg
ってことか
なるほどね
変更、なし!
見てへんかった 変更なしでよい?
まあupdateの時の書き方を覚えればいいので...とは思う
あ、gはsegmenttreeのgを考えていた
概要
i
に値x
をseti
にx
を加算g = [](M a, M b){return b;}
g = [](M a, M b){return a+b;}
segt.update(i, x)
segt.update(i, segt[i] + x)
比較
現在の実装のデメリット
性能 現在の実装 https://judge.yosupo.jp/submission/26419 提案実装 https://judge.yosupo.jp/submission/26421
現在の実装710ms, 提案実装711msでほぼ同速(
segt[i]
がO(1)で動作するため)