NISHIO Hirokazu
[Translate]
問題変換
ある抽象的な解法Aである具体的な問題Xが解ける
これはAを知っていると自明にわかる
しかし意外な問題YがAで解けることがある
ある問題変換Bが存在して、それが一部の問題を別の問題に写像する
最大流最小カット定理
とか
これによって一見Aに含まれないYがAに含まれるY'に写像される
問題変換には他にどんなものがあるだろうか
ベクトルで表現されてる問題を複素数に変換して解く
ベクトル複素数変換
値域と定義域の交換
数の集合を0/1の列とみなして
フェニック木
を使う
座標圧縮
して計算可能な範囲の値にする
巨大な整数を桁の列とみなしてDPする
桁DP
Project Selection Problem
を
最小費用流
に帰着
数列の問題を
形式的べき級数
とみなす
双対線形計画問題
Tweet
Related Pages
Project Selection Problem
AtCoderEntrypoint
値域と定義域の交換
頂点を辺に変換
連結成分ごとに解けば良い
僕のatcoderの学び方(〜青)
同じ状態をまとめるのが動的計画法の本質
グラフが木なので根つき木に変換
二次元配列を座標の列にする
座標圧縮
最小費用流
削除可能集合で不等号条件
操作の結果の数え上げ→構成可能判定
黒マスに隣接している白マスを黒にする
典型力
辺を頂点にして二部グラフ
塗りの時間軸反転
ゴールを一つにする
境界の位置を全探索
maxの不等号は不等号のand
符号を揃える
広い判定で全探索
余事象を引く
桁DP
帰着する力
フェニック木
双対線形計画問題
形式的べき級数
→
最小カットのカットは「辺を切る」ではない
×
カット=頂点の二色塗り分け
×
最小カットに帰着
×
dinic
×
dinicの速さ
×
Project Selection Problem
→
最小カット勉強会
→
最小カットで3以上の選択肢
×
座標圧縮
→
💻KUPC2017H
→
2色で塗り分け→グラフのカット
×
グラフのカット
×
2色での塗り分け
×
最大カット→二部グラフなら片側を反転
×
最大カット
×
グリッドグラフ
×
二部グラフ
×
abc193
×
Project Selection Problem
→
✅ABC193F
→
最小カット
×
Project Selection Problem
×
カット=頂点の二色塗り分け
→
最小カットのカットは「辺を切る」ではない
→
数え上げ
×
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
→
数え上げテクニック集
→
フェニック木
×
値域を定義域にする
×
クエリがたくさん問題
→
多くのものと大小比較→フェニック木
→
ABC194
×
桁DP
×
DP S
→
ABC194F
→
行列の半分
×
和の順序
×
期待値dp
×
dp_j
×
頻度表
×
フェニック木
×
ABC194F
×
atcoder202103
→
ABC194
→
最小カットに帰着
×
最大流
×
Project Selection Problem
×
aclpc_d
×
最大二部マッチング
×
帰着する力
×
最小費用流に帰着
→
最大流に帰着
→
ダイクストラ法
×
定義域より値域が狭い関数
×
値域と定義域の交換
×
ゆるい逆写像
×
実数に対する大小判定
×
二分探索チェックリスト
→
ABC191
→
貪欲法
×
独立性オラクル
×
pseudoforest
×
マトロイド交叉
×
2部グラフの最大マッチングは,分割マトロイド対のマトロイド交叉
×
最小費用流
×
増加道アルゴリズム
×
2部グラフ
×
最大マッチング
×
分割マトロイド
×
主双対アルゴリズム
×
primal-dual
→
マトロイド
→
rangeaddは二つのpointadd
×
abc183
×
座標圧縮
×
いもす法
×
イベントソート
×
特殊な制約
×
時間軸反転
×
heapq+dict
×
AGC044A
→
ABC188
→
最長増加部分列
×
dilworthの定理
×
座標圧縮
×
フェニック木
×
二分探索
×
更新され二分探索できる配列
→
ABC134E
→
クエリの先読み
×
二次元の片方を時間軸にする
×
二項ヒープ
×
フェニック木
×
多くのものと大小比較→フェニック木
×
クエリがたくさん問題
×
abc174
×
mo's_algorithm
→
ABC174F
→
最小費用流
×
経路のスコアを最大化する問題
×
未ac
→
ABC175E
→
オイラー路
×
グリッド上の幅優先探索
×
ハンガリアン法
×
二部グラフの最大マッチング
×
二重辺連結成分分解
×
二重頂点連結成分分解
×
全点対間最短路
×
単一始点最短路
×
強連結成分分解
×
彩色数
×
最大クリーク
×
最大流
×
最大独立集合
×
最小全域有向木
×
最小全域木
×
最小流量制限付き最大流
×
最小費用流
×
橋/関節点
×
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
→
プログラミングコンテストチャレンジブック
→
past3
×
past3n
×
PAST3O
×
past1m
×
past1k
×
最小共通祖先
×
past1l
×
クラスカル法
×
past2h
×
past2i
×
past2j
×
past2k
×
最小費用流
×
PAST2N
×
平面走査法
×
past3m
×
巡回セールスマン問題
×
past2m
×
past4m
×
past2l
×
past4n
×
past2o
×
past4o
×
PAST1O
→
PAST過去問練習202012
→
PAST2N
×
二次元の片方を時間軸にする
×
座標圧縮
×
rangeaddは二つのpointadd
×
長方形クエリ
→
長方形区間add
→
第二回_アルゴリズム実技検定
×
平面走査法
×
長方形区間add
×
クエリの先読み
×
座標圧縮
×
rangeaddは二つのpointadd
→
PAST2N
→
第三回_アルゴリズム実技検定
×
n個からm個選ぶ
×
最小費用流
×
最小費用流に帰着
→
PAST3O
→
abc174
×
二分探索
×
最大値の最小化
×
値域と定義域の交換
×
二分探索チェックリスト
→
ABC174E
→
multiset
×
ABC170 E
×
heapq
×
heapq+dict
×
bisect
×
フェニック木
×
bit
×
座標圧縮
×
平衡二分木
×
RBST
×
データ構造
→
Pythonでmultiset
→
何が変化するかに注目
×
座標圧縮
×
期待値dp
×
第一回_アルゴリズム実技検定
→
PAST1O
→
配列
×
リンクトリスト
×
フェニック木
×
セグメント木
×
平衡二分木
×
帰着する力
→
配列もリストも都合が悪い
→
PAST3O
×
コストが流量に比例しない最小費用流
×
累進コストを差で表現
×
ACLPC E
×
二次元のマス目は二部グラフ
×
最小費用流
×
最大流に帰着
×
最短経路問題に帰着
→
最小費用流に帰着
→
atcoder_library_practice_contest
×
最小費用流
→
ACLPC E
→
データ構造
×
秋葉_拓哉
×
遅延伝搬セグメント木
×
heapq
×
フェニック木
→
セグメント木
→
abc186
×
余事象を引く
×
削除可能集合で不等号条件
×
ACL1A
×
フェニック木
×
長方形区間カウント
→
ABC186F
→
acl1
×
scc
×
dsu
×
順番を固定することで覚えるべき情報を減らす
×
ゼロフィルのリンクトリスト
×
フェニック木
×
削除可能集合で不等号条件
×
二者間の関係からより大きな構造ができる
→
ACL1A
→
時間軸反転
×
桁DP
×
agc044
×
atcoder
→
AGC044A
→
オーバーフロー罠
×
フェニック木
×
longest_common_substring
×
編集距離
→
ABC185
→
ホッケースティック恒等式
×
二項係数の公式
×
vandermondeの恒等式
×
巨大なnについての二項係数
×
形式的べき級数
×
ARC110D_FPS
×
oeis
×
重複組合せの畳み込み
×
arc110d_nonfps
×
arc110
→
ARC110D
→
ARC110D
×
形式的べき級数
×
下固定の二項係数→負の二項定理
×
形式的べき級数の係数の部分和
×
べき級数→二項係数
→
ARC110D_FPS
→
操作の順番によらない
×
三角数
×
値域と定義域の交換
→
ARC109
→
aclpc_l
×
PAST4K
×
フェニック木
→
転倒数
→
第四回_アルゴリズム実技検定
×
転倒数
×
aclpc_l
×
フェニック木
→
PAST4K
→
atcoder_library_practice_contest
×
フェニック木
→
ACLPC B
→
競技プログラミングで解法を思いつくための典型的な考え方
×
符号でわける
×
値域と定義域の交換
×
頻度表
×
二つの頻度表の突き合わせ
→
arc060 a
→
形式的べき級数
→
形式的べき級数の係数の部分和
形式的べき級数の逆元を使った無限和圧縮
→
桁DP
→
abc007_4
DP S
→
桁DP
×
abc154e_old
×
DP S
→
ABC154E
→
計算量の見積もり
×
座標圧縮
×
いもす法
×
公式より小オーダー
×
abc014
→
ABC014C
→
帰着する力
×
ソートしても一般性を失わない
×
ユークリッドの互除法
×
最長経路探索
×
負の費用
×
最小費用流
×
偶奇で場合わけ
×
小さい問題を力づくで解いて観察
×
tutte_の定理
×
二部グラフ判定
→
ARC105
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
Two Snuke
×
長整数が速い
×
dsu
×
unionfind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
最短経路
×
lp双対
×
差分制約
×
最小費用流
×
線形計画問題
×
双対線形計画問題
×
双対性
×
LPとグラフと定式化
→
最短経路の双対と差分制約
→
双対lp
×
双対線形計画問題
×
lp双対
×
最小費用流
×
差分制約
×
ラグランジュ双対
→
双対性
→
tokoharu
×
最短経路
×
差分制約
×
牛ゲー
×
最大流
×
最大流最小カット定理
×
最大循環流
×
最小費用流
×
最小費用循環流
×
Project Selection Problem
×
双対線形計画問題
→
LPとグラフと定式化
→
primal-dual
×
最小費用流
→
主双対アルゴリズム
→
数列
×
形式的べき級数
×
畳み込み
×
np.convolve
×
Two Snuke
→
数列を有理式にする
→
エイシング プログラミング コンテスト 2020
×
母関数
×
形式的べき級数
×
形式的べき級数の逆元を使った無限和圧縮
×
計算ミス
×
数列を有理式にする
→
Two Snuke
→
最小費用流
×
線形計画問題
×
数理計画法
×
ネットワーク計画
×
負閉路除去
×
塩浦_昭義
→
最小費用流は線形計画問題
→
燃やす埋める
×
最小カット
×
Project Selection Problem
→
最小カットを使って「燃やす埋める問題」を解く
→
最小費用流
×
lp双対
→
最小費用流の双対
→
形式的べき級数
×
leibniz則
→
形式的べき級数の形式微分
→
分配法則
×
形式的べき級数
→
積と和の交換
→
形式的べき級数
×
数え上げ
→
形式的べき級数による数え上げ
→
積と和の交換
×
形式的べき級数
→
エイシング プログラミング コンテスト 2020
→
フェニック木
→
DP Q
→
ナップサック
×
値域と定義域の交換
×
動的計画法
×
dp_d
→
DP E
→
座標圧縮
×
setはメモリ食い
×
numba
×
numbaに複雑な型を渡す
×
numba_bisect
×
numpy.unique
×
長方形グラフ探索
×
番兵
×
numba_np.concatenate
×
csr_matrix
×
リンクトリスト
×
mprof
×
atcoder
→
ABC168 F
→
ABC170 E
×
Pythonでmultiset
×
平衡二分木
×
フェニック木
×
numba
→
RBST
→
abc170
×
heapq
×
ヒープキュー
×
セグメント木
×
フェニック木
×
座標圧縮
×
標準入出力でtle
→
ABC170 E
→
atcoder
×
座標圧縮
×
mprof
→
setはメモリ食い
"
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, 2:15:57 PM
[Edit]