NISHIO Hirokazu
[Translate]
Pythonでmultiset
Pythonに
multiset
が欲しいという意見がよくある e.g.
ABC170 E
だいたいのことが
heapq
との組み合わせでできる
heapq
O(logn)で要素の挿入
O(1)で最小値の取得
heapq
とdict(ハッシュテーブル)の組み合わせ
heapq+dict
Pythonでmultisetの代用ができるデータ構造 - Tsuboの競プロブログ
O(logN)で要素の挿入、削除
O(1)で要素の存在確認、最小値の取得
二分探索ができない
二分探索
事前にソートして良いなら
bisect
k番目の値は読むだけ。O(1)
「kを超える最初の場所」がright、「k以上の最初の場所」がleft
固定のk番目の値が欲しい→
heapq
k 番目の値を高速に取り出せるデータ構造のまとめ - BIT上二分探索や平衡二分探索木など - Qiita
フェニック木
BIT
値域のサイズD
二分探索 O(logD)
追加削除はO(logD)
座標圧縮
でDを圧縮することが効果的
「k番目の値」も「kを超える最初の値」も両方できる
平衡二分木
RBST
AVL木
https://juppy.hatenablog.com/entry/2019/02/26/python_AVL木_配列ver_競技プログラミング_Atcoder_
「順序付き集合は平方分割が速い」らしい(未確認
https://nagiss.hateblo.jp/entry/2019/06/04/220541
https://atcoder.jp/contests/abc140/submissions/7482671
SkipList
https://atcoder.jp/contests/arc033/submissions/14718760
C - データ構造
データ構造
Tweet
Related Pages
座標圧縮
heapq
フェニック木
PythonでC++をコンパイル
RBST
ABC170 E
データ構造
bisect
平衡二分木
→
ambiguous_stagnation
×
曖昧な停滞
×
明確な対立
×
対立回避
×
broad_and_shallow_listening
×
ブロードリスニング
×
広聴
×
広くて浅い
×
協力の深さと広さのトレードオフ
×
civic_muscle
×
パレート改善
×
existing_vendor
×
どこへ行ったのかのトレーサビリティ
×
agency
×
主体性
×
出した声が結果に変わる回路
×
decidim
×
geoip
×
nuro光でシンガポールと誤認される
×
マイナンバーカード認証
×
政府の効率化
×
ideation
×
agile_doctrine
×
機会を発信なしで知ることはできない
×
ダブルダイヤモンド
×
jonathan_fox
×
ダイヤモンドサンドイッチ
×
acute
×
immune_response
×
ハイパーローカル
×
⿻_plurality_&_6pack.care
×
reverse_procurement
×
参加型アカウンタビリティ
×
茹でガエル
×
chronic
×
uncommon_ground
×
地方課題
×
慢性
×
シビック・カタリスト
×
manufactured_urgency
×
緊急性の創出
×
shared_urgency
×
anton_eklund+_2023
×
特定データで機能するのは一般データでより楽
×
sensemaker
×
openai/gpt-oss
×
再現可能でなければ正統性がない
×
クローズドなモデルにロックインされないようにする
×
モダリティ
×
不可知論的ツール
×
specific_individual_topics
×
entire_systemic_viewpoint
×
実装より理論
×
アジェンダ設定の権限を人々に開放する
×
d-agreeシステム
×
台湾詐欺防止法
×
詐欺犯罪危害防制條例
×
fchpa
×
dbrand
×
cortico
×
スピーチとリーチ
×
言論の自由
×
freedom_of_speech
×
stanford_online_deliberation_platform
×
deliberative_polling
×
habermas_machine
×
再現性
×
artificial_intelligence_in_deliberation:_the_ai_penalty_and_the_emergence_of_a_new_deliberative_divide
×
pvcアルゴリズム
×
defensive_technology
×
d/acc
×
防衛的な集約
×
デジタル民主主義2030_meetup_#3
×
leon_erichsen
×
qvは決定論的
×
collaborative_meeding
×
civic_mascle
×
返信ボタンがない
×
層化無作為抽出
×
sitra
×
kerrokantasi
×
digifinland
×
polis
×
voxit
×
borgerforslag
×
folketing
×
your_priorities
×
message_checker
×
cofacts
×
roost
×
uncommon_groundのプロパガンダ
×
metaculus
×
6-pack_of_care
×
効用
×
ケア
×
connections_between_indivisuals_as_first-class_objects
×
joan_tronto
×
symbioenesis
×
共生進化
×
エピステミック・セキュリティ
×
epistemic_security
×
policy_lab
×
nesta
×
bit
×
demos
×
私たちが共に何かを知ることができることに関する安全保障
×
変容型ファシリテーション
×
実装ではなく思想が大事
×
スーパーノート
→
思考の結節点2025-10-10
→
データ構造
×
平衡二分探索木
×
秋葉_拓哉
×
treap
×
RBST
×
スプレー木
×
block_linked_list
×
skip_list
×
スキップリスト
×
平衡二分木
→
プログラミングコンテストでのデータ構造2平衡二分探索木編
→
最小カットで3以上の選択肢
×
座標圧縮
→
💻KUPC2017H
→
数え上げ
×
degwer
×
状態をまとめる
×
dpは全探索の高速化
×
arc059f
×
codefestival_2016_final_f
×
aoj2439
×
探索順の変更
×
大きい順に並べる
×
aoj2333
×
順列は挿入dp
×
bit_dp
×
区間は終点でソート
×
条件の言い換え
×
操作は多いが産物は少ない
×
agc013d
×
線形和への分解
×
演算順序の変更
×
ビット演算を桁ごとに分解
×
部分群
×
操作が可逆で全域→部分群
×
ラグランジュの定理
×
再帰的定義→dp
×
arc037d
×
桁dp
×
aoj0570
×
累積和
×
フェニック木
×
高速フーリエ変換
×
ntt
×
高速ゼータ変換
×
and_と_add_の畳み込み
×
二分累乗
×
agc013e
×
行列木定理
×
全域木の個数
×
lgv公式
×
非交叉経路の個数
×
小さい確率を無視する
×
二項係数の公式
×
経路数
×
45度回転
×
xとyにわける
×
カタラン数
×
包除原理
×
agc005d
×
約数系包除
×
arc064f
→
数え上げテクニック集
→
問題変換
×
フェニック木
×
動的計画法
×
dp_e
×
abc191
×
値域を定義域にする
×
定義域より値域が狭い関数
→
値域と定義域の交換
→
フェニック木
×
値域を定義域にする
×
クエリがたくさん問題
→
多くのものと大小比較→フェニック木
→
行列の半分
×
和の順序
×
期待値dp
×
dp_j
×
頻度表
×
フェニック木
×
abc194f
×
atcoder202103
→
ABC194
→
rangeaddは二つのpointadd
×
abc183
×
座標圧縮
×
いもす法
×
イベントソート
×
特殊な制約
×
時間軸反転
×
heapq+dict
×
agc044a
→
ABC188
→
最長増加部分列
×
dilworthの定理
×
座標圧縮
×
フェニック木
×
二分探索
×
更新され二分探索できる配列
→
ABC134E
→
クエリの先読み
×
二次元の片方を時間軸にする
×
二項ヒープ
×
フェニック木
×
多くのものと大小比較→フェニック木
×
クエリがたくさん問題
×
abc174
×
mo's_algorithm
→
ABC174F
→
オイラー路
×
グリッド上の幅優先探索
×
ハンガリアン法
×
二部グラフの最大マッチング
×
二重辺連結成分分解
×
二重頂点連結成分分解
×
全点対間最短路
×
単一始点最短路
×
強連結成分分解
×
彩色数
×
最大クリーク
×
最大流
×
最大独立集合
×
最小全域有向木
×
最小全域木
×
最小流量制限付き最大流
×
最小費用流
×
橋/関節点
×
bit
×
binary-trie
×
convex-hull-trick-add-monotone
×
li-chao-tree
×
link-cut木_部分木クエリ
×
link-cut木
×
ウェーブレット行列
×
スパーステーブル
×
スライド区間の昇順k個の和
×
セグメント木
×
トライ木
×
マージ可能ヒープ
×
列の平方分割
×
平衡二分探索木
×
永続配列
×
素集合データ構造
×
UnionFind
×
ローリングハッシュ
×
接尾辞配列
×
最長共通接頭辞
×
最長回文
×
回文
×
複数文字列検索
×
hl分解
×
全方位木dp
×
最小共通祖先
×
木の直径
×
木の重心分解
×
根付き木に変換
×
mod-pow
×
オイラーのφ関数
×
オイラーのφ関数テーブル
×
ベル数
×
ラグランジュ補間
×
二項係数
×
二項係数テーブル
×
任意mod畳み込み
×
分割数
×
分割数テーブル
×
商列挙
×
形式的冪級数
×
形式的べき級数
×
拡張ユークリッドの互除法
×
拡張ユークリッド互除法
×
第2種スターリング数
×
約数列挙
×
素因数分解
×
素数テーブル
×
素数判定
×
組合せ
×
行列演算
×
進数変換
×
階乗
×
離散対数問題
×
高速フーリエ変換
×
divide-and-conquer-optimization
×
monotone-minima
×
スライド最小値
×
一次元累積和
×
二次元累積和
×
個数制限付きナップサック
×
最大長方形
×
最適二分探索木
×
最長増加部分列
×
ダブリング
×
包除原理
×
燃やす埋める問題
×
燃やす埋める
×
牛ゲー
×
mo’s_algorithm
×
offline-dynamic-connectivity
×
座標圧縮
×
アルゴリズム
→
Luzhiled's memo
→
二次元の片方を時間軸にする
×
フェニック木
×
ABC186F
×
二次元累積和
×
長方形クエリ
→
長方形区間カウント
→
アルゴリズム
×
蟻本
×
区間スケジューリング
×
二分探索木
×
UnionFind
×
最短路問題
×
最小全域木
×
ユークリッドの互除法
×
ニ分探索
×
しゃくとり法
×
半分全列挙
×
座標圧縮
×
セグメント木
×
binary_lndexed_tree
×
バケット法
×
平方分割
×
ビットdp
×
bitdp
×
行列累乗
×
繰り返し二乗法
×
最大流
×
最小カット
×
二部マッチング
×
一般マッチング
×
マッチング
×
辺カバー
×
安定集合
×
点カバー
×
最小費用流
×
凸包
×
grundy数
×
強連結成分分解
×
2-sat
×
lca
×
ダブリング
×
接尾辞配列
×
sparse_table
×
rmq
×
atcoder
→
プログラミングコンテストチャレンジブック
→
優先度キュー
×
heapq
×
蟻本
→
ダイクストラ法
→
PAST2N
×
二次元の片方を時間軸にする
×
座標圧縮
×
rangeaddは二つのpointadd
×
長方形クエリ
→
長方形区間add
→
第二回_アルゴリズム実技検定
×
平面走査法
×
長方形区間add
×
クエリの先読み
×
座標圧縮
×
rangeaddは二つのpointadd
→
PAST2N
→
二分ヒープ
×
データ構造
×
二分ヒープの挿入が平均定数時間
→
二項ヒープ
→
heapq
→
N個の値が更新される、最小値を知りたい
M個の数がN個の集合を移動する。集合の最小要素を得たい
Best Kの取得
中央値
ある集合に値が追加削除される。最小の値を取得したい。
→
heapq
×
heapq+dict
→
ヒープのK番目の値を更新したい
二分ヒープ
→
データ構造
×
2-sat
×
素集合データ構造
×
disjoint_set_union
×
dsu
×
union-find
→
UnionFind
→
何が変化するかに注目
×
座標圧縮
×
期待値dp
×
第一回_アルゴリズム実技検定
→
PAST1O
→
配列
×
リンクトリスト
×
フェニック木
×
セグメント木
×
平衡二分木
×
帰着する力
→
配列もリストも都合が悪い
→
データ構造
×
秋葉_拓哉
×
遅延伝搬セグメント木
×
heapq
×
フェニック木
→
セグメント木
→
abc186
×
余事象を引く
×
削除可能集合で不等号条件
×
ACL1A
×
フェニック木
×
長方形区間カウント
→
ABC186F
→
acl1
×
scc
×
dsu
×
順番を固定することで覚えるべき情報を減らす
×
ゼロフィルのリンクトリスト
×
フェニック木
×
削除可能集合で不等号条件
×
二者間の関係からより大きな構造ができる
→
ACL1A
→
ソート済み配列
×
二分探索
×
リンクトリスト
×
フェニック木
×
削除可能集合
×
不等号条件
×
問題変換
→
削除可能集合で不等号条件
→
オーバーフロー罠
×
フェニック木
×
longest_common_substring
×
編集距離
→
ABC185
→
aclpc_l
×
PAST4K
×
フェニック木
→
転倒数
→
第四回_アルゴリズム実技検定
×
転倒数
×
aclpc_l
×
フェニック木
→
PAST4K
→
atcoder_library_practice_contest
×
フェニック木
→
ACLPC B
→
第三回_アルゴリズム実技検定
×
bisect
→
PAST3J
→
連結リスト
×
データ構造
→
リンクトリスト
→
ABC170
×
heapq
→
PAST3L
→
計算量の見積もり
×
座標圧縮
×
いもす法
×
公式より小オーダー
×
abc014
→
ABC014C
→
頻度→三角数
×
三角数
×
多重集合
×
multiset
→
頻度表
→
最大流最小カット定理
×
ベクトル複素数変換
×
値域と定義域の交換
×
フェニック木
×
座標圧縮
×
桁dp
×
project_selection_problem
×
最小費用流
×
形式的べき級数
×
双対線形計画問題
→
問題変換
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
two_snuke
×
長整数が速い
×
dsu
×
UnionFind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
平衡二分木
→
PythonからC++のsetを使う
→
numpyの添え字アクセスは遅い
×
ループをnumpyに任せる
×
numba
×
RBST
→
np.arrayが遅い
→
累積和
×
bisect
→
abc130_d
→
フェニック木
→
DP Q
→
RBST
→
numba
→
座標圧縮
×
setはメモリ食い
×
numba
×
numbaに複雑な型を渡す
×
numba bisect
×
numpy.unique
×
長方形グラフ探索
×
番兵
×
numba_np.concatenate
×
csr_matrix
×
リンクトリスト
×
mprof
×
atcoder
→
ABC168 F
→
atcoder
×
座標圧縮
×
mprof
→
setはメモリ食い
→
numpy.searchsorted
×
二分探索
×
bisect
×
numpy
→
numpy.unique
→
numba
×
bisect
→
numba bisect
→
atcoder
×
第三回_アルゴリズム実技検定
×
エラトステネスのふるい
×
ABC170 E
→
ABC170
→
データ構造
→
Trie
"
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
11/23/2025, 5:16:38 PM
[Edit]