NISHIO Hirokazu[Translate]
Pythonでmultiset
Pythonにmultisetが欲しいという意見がよくある e.g. ABC170 E
だいたいのことがheapqとの組み合わせでできる

O(logn)で要素の挿入
O(1)で最小値の取得
heapqとdict(ハッシュテーブル)の組み合わせ heapq+dict
O(logN)で要素の挿入、削除
O(1)で要素の存在確認、最小値の取得
二分探索ができない
二分探索
事前にソートして良いならbisect
k番目の値は読むだけ。O(1)
「kを超える最初の場所」がright、「k以上の最初の場所」がleft
固定のk番目の値が欲しい→ heapq
値域のサイズD
二分探索 O(logD)
追加削除はO(logD)
座標圧縮でDを圧縮することが効果的
「k番目の値」も「kを超える最初の値」も両方できる
AVL木

「順序付き集合は平方分割が速い」らしい(未確認
SkipList





"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]