Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[問題案] SegTree系 #114

Closed
yosupo06 opened this issue Oct 3, 2019 · 11 comments
Closed

[問題案] SegTree系 #114

yosupo06 opened this issue Oct 3, 2019 · 11 comments

Comments

@yosupo06
Copy link
Owner

yosupo06 commented Oct 3, 2019

No description provided.

@yosupo06
Copy link
Owner Author

yosupo06 commented Oct 3, 2019

#113

基本的に色んな種類の演算を1個用意して、色々作っていく

1点add / 区間sum

  • 一番基本的といって過言ではない、採用
  • 可換, 結合, 逆元

@yosupo06
Copy link
Owner Author

yosupo06 commented Oct 3, 2019

2 x 2行列、1点変更 / 区間積

  • 非可換, 結合, 逆元はどっちでもできる

バイナリ文字列、1点変更 / 転倒数

  • マイナー?
  • 非可換, 結合, 逆元なし

どっちがいいだろう(非可換, 結合タイプ)

@yosupo06
Copy link
Owner Author

yosupo06 commented Oct 3, 2019

#3

@kmyk
Copy link
Contributor

kmyk commented Oct 3, 2019

1次関数、1点変更 / 区間関数合成
(f = ax + b, g = cx + d のとき演算 f ○ g = f(g(x)) = acx + ad + b)

  • 非可換、結合、逆元なし
  • マイナーではなくかつ行列より実装が楽

これどうかな

@yosupo06
Copy link
Owner Author

yosupo06 commented Oct 3, 2019

ありです

@yosupo06
Copy link
Owner Author

yosupo06 commented Oct 22, 2019

区間加算/区間max

  • (Starry Sky Treeの影響が大きい気もするが)多分一番基本的な遅延伝搬segtree
  • 区間変更(加算): 可換、結合、逆元
  • 区間結合(max): 可換、結合、逆元なし

遅延伝搬segtree、パラメーターが多すぎないか?

@yosupo06
Copy link
Owner Author

#20 #125

@yosupo06
Copy link
Owner Author

区間行列積/区間行列set

  • 区間変更(行列積): 非可換、結合、逆元どっちでもいい
  • 区間結合(行列set): 非可換、結合、逆元なし
  • 変更、結合で両方非可換なのがこれぐらいしか思いつかなかった
  • 実装が面倒(行列+k乗)、ランダムケースだと多分めっちゃ弱い(数列にランダムにsetクエリを飛ばすとひどいことになる)

そもそも結合じゃないと多分どうしようも無いから書く必要なかったな

@yosupo06
Copy link
Owner Author

↑一次関数でも可能だった

@yosupo06
Copy link
Owner Author

操作一覧 基本的に逆元は消す理由がないので消さない

欲しいかもしれない候補?

  • 伝搬可換だと実装の自由度が上がる(遅延伝搬がいらなくなったり)
  • 要素非可換、伝搬非可換は欲しいか?

@yosupo06
Copy link
Owner Author

この3種類で一通りは大丈夫なはず

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants