NISHIO Hirokazu
[Translate]
値域と定義域の交換
値域が狭い(問題の制約で狭めてある)時や、定義域がやたら広い(部分集合の全体2^2000とか)時に、値域と定義域を交換する
問題変換
が有効なケースがある
フェニック木
値の集合を添え字が値であるような配列に1が立ってるもので表現する
動的計画法
値域が定義域より狭い時に、定義域の中で最大の値を見つける代わりに、値域の中で制約を満たす最大の添え字を見つける
DP E
要素2000個の集合の部分集合にたいするgcd、定義域は2^2000だが、値域は2000個の約数の集合でもっと小さい
ABC191
F
値域を定義域にする
定義域より値域が狭い関数
Tweet
Related Pages
AtCoderEntrypoint
ABC191
ABC174E
ARC109
arc060 a
動的計画法
問題変換
フェニック木
DP E
→
数え上げ
×
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
→
数え上げテクニック集
→
動的計画法
×
巡回セールスマン問題
→
bitDP
→
フェニック木
×
値域を定義域にする
×
クエリがたくさん問題
→
多くのものと大小比較→フェニック木
→
past5h
×
abc184e
×
past4j
×
PAST4K
×
abc175d
×
arc106
×
abc164d
×
素因数分解を_o(n^(1/4))_でする
×
abc189
×
abc190e
×
abc194f
×
atcoderのpythonでmemoryerrorを出すとreになる
×
agc048
×
abc179d
×
深さ優先探索
×
aoj_grl_5_c
×
arc107
×
agc044a
×
past2n
×
past3o
×
頂点を塗るのか辺を塗るのか
×
past4m
×
abc178f
×
abc192
×
ABC191
→
AtCoder失敗リスト
→
行列の半分
×
和の順序
×
期待値dp
×
DP J
×
頻度表
×
フェニック木
×
abc194f
×
atcoder202103
→
ABC194
→
問題変換
→
頂点を辺に変換
二次元配列を座標の列にする
黒マスに隣接している白マスを黒にする
符号を揃える
→
部分文字列
×
動的計画法
→
部分列DP
→
連結成分
×
問題変換
→
連結成分ごとに解けば良い
→
最長増加部分列
×
dilworthの定理
×
座標圧縮
×
フェニック木
×
二分探索
×
更新され二分探索できる配列
→
ABC134E
→
クエリの先読み
×
二次元の片方を時間軸にする
×
二項ヒープ
×
フェニック木
×
多くのものと大小比較→フェニック木
×
クエリがたくさん問題
×
abc174
×
mo's_algorithm
→
ABC174F
→
僕のatcoderの学び方(〜水色)
×
僕のatcoderの学び方(〜past上級)
×
abc187
×
past過去問練習202012
×
変形テクニックに名前をつける
×
頂点数18の制約
×
辺が10^5の制約
×
行列の半分
×
二項定理
×
足し算の順序の変更
×
辺が10^5ならダイクストラ使える
×
典型力
×
問題変換
×
問題分割
×
認知の解像度
×
概念のハンドル
×
AtCoder失敗リスト
×
AtCoderEntrypoint
×
アルゴリズム実技検定
×
第五回_アルゴリズム実技検定
×
最小費用流に帰着
×
帰着訓練
→
僕のatcoderの学び方(〜青)
→
chokudai
×
動的計画法
×
問題変換
→
同じ状態をまとめるのが動的計画法の本質
→
二次元の片方を時間軸にする
×
フェニック木
×
ABC186F
×
二次元累積和
×
長方形クエリ
→
長方形区間カウント
→
僕のatcoderの学び方(〜緑)
×
僕のatcoderの学び方(〜青)
×
arc106
×
気づきの言語化
×
結晶化
×
変形テクニックに名前をつける
×
行列の半分
×
二項定理
×
足し算の順序の変更
×
概念のハンドル
×
テストできるスニペットライブラリ
×
unionfind
×
mod_pでの組み合わせ
×
Educational DP Contest
×
動的計画法
×
atcoder_library_practice_contest
×
AtCoder Library
×
帰着する力
×
帰着訓練
→
僕のatcoderの学び方(〜水色)
→
根つき木に変換
×
最小共通祖先
×
問題変換
→
グラフが木なので根つき木に変換
→
動的計画法
×
番兵
→
範囲上下に番兵
→
第二回_アルゴリズム実技検定
×
括弧列は上り下り
×
動的計画法
×
範囲上下に番兵
→
PAST2K
→
multiset
×
ABC170 E
×
heapq
×
heapq+dict
×
bisect
×
フェニック木
×
bit
×
座標圧縮
×
平衡二分木
×
RBST
×
データ構造
→
Pythonでmultiset
→
配列
×
リンクトリスト
×
フェニック木
×
セグメント木
×
平衡二分木
×
帰着する力
→
配列もリストも都合が悪い
→
データ構造
×
秋葉_拓哉
×
遅延伝搬セグメント木
×
heapq
×
フェニック木
→
セグメント木
→
abc186
×
余事象を引く
×
削除可能集合で不等号条件
×
ACL1A
×
フェニック木
×
長方形区間カウント
→
ABC186F
→
acl1
×
scc
×
dsu
×
順番を固定することで覚えるべき情報を減らす
×
ゼロフィルのリンクトリスト
×
フェニック木
×
削除可能集合で不等号条件
×
二者間の関係からより大きな構造ができる
→
ACL1A
→
ソート済み配列
×
二分探索
×
リンクトリスト
×
フェニック木
×
削除可能集合
×
不等号条件
×
問題変換
→
削除可能集合で不等号条件
→
操作の結果の数え上げ
×
操作の結果の数え上げ→操作の結果が同一になる条件は?
×
組み合わせ不可能な操作
×
区切る位置のdp
×
動的計画法
×
agc031
→
AGC031B
→
arc110
×
操作の結果の数え上げ
×
問題変換
→
操作の結果の数え上げ→構成可能判定
→
帰着する力
×
agc022c
×
ゴールから逆算
×
2回やっても意味がない
×
最適な操作の順番が一位
×
コストが2^k→辞書順最小
×
1〜xで足りて1〜x-1で足りない時xは必須
×
問題変換
×
問題分割
×
状態情報の圧縮
→
典型力
→
オーバーフロー罠
×
フェニック木
×
longest_common_substring
×
編集距離
→
ABC185
→
累積和
×
動的計画法
×
abc179d
×
abc179
→
累積和しながらDP
→
codefestival_2016_final_c
×
問題変換
→
辺を頂点にして二部グラフ
→
aclpc_l
×
PAST4K
×
フェニック木
→
転倒数
→
第四回_アルゴリズム実技検定
×
転倒数
×
aclpc_l
×
フェニック木
→
PAST4K
→
atcoder_library_practice_contest
×
フェニック木
→
ACLPC B
→
時間軸反転
×
問題変換
→
塗りの時間軸反転
→
第三回_アルゴリズム実技検定
×
動的計画法
→
PAST3H
→
コスト0の遷移を付け加える
×
問題変換
→
ゴールを一つにする
→
小さな定数に注目
×
問題変換
→
境界の位置を全探索
→
最大化を二分探索で
×
最小値の最大化
×
max
×
不等号
×
and
×
問題変換
→
maxの不等号は不等号のand
→
動的計画法
→
abc135_d
DP C
→
問題変換
×
全探索
→
広い判定で全探索
→
問題変換
×
包除原理
→
余事象を引く
→
動的計画法
×
dp_s
×
abc154e
×
digit_dp
→
桁DP
→
動的計画法
×
DP A
×
DP B
×
DP C
×
dp_d
×
DP E
×
DP F
×
DP G
×
DP H
×
DP I
×
DP J
×
dp_k
×
dp_l
×
dp_m
×
dp_n
×
dp_o
×
dp_p
×
DP Q
×
dp_r
×
dp_s
×
dp_t
×
dp_u
×
dp_v
×
dp_w
×
dp_x
×
dp_y
×
dp_z
→
Educational DP Contest
→
動的計画法
×
余事象を引く
→
ABC172E
→
acl1
×
削除可能集合で不等号条件
×
連想接続
×
問題変換
→
帰着する力
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
two_snuke
×
長整数が速い
×
dsu
×
unionfind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
AtCoder Library
×
遅延伝搬セグメント木
×
連結成分
×
unionfind
×
セグメント木
×
動的計画法
×
集めるdp
×
範囲縮約
×
平方分割
×
畳み込み
×
包除原理
→
ACL Beginner Contest
→
動的計画法
×
配るdp
×
集めるdp
→
DP B
→
動的計画法
×
配るdp
×
集めるdp
×
メモ化再帰
×
DP A
→
動的計画法の三通りの実装
→
動的計画法
×
集めるdp
×
配るdp
×
メモ化再帰
→
DP A
→
ビタビアルゴリズム
×
隠れマルコフモデル
×
動的計画法
→
Viterbiアルゴリズム
→
木dp
×
逆元
×
単位元
×
結合則
×
左右から累積積
×
動的計画法
→
全方位木DP
→
フェニック木
→
DP Q
→
経路数え上げ
×
動的計画法
→
DP H
→
動的計画法
×
確率dp
→
DP I
→
動的計画法
×
期待値dp
×
DP J
×
順序のない列は多重集合
×
多重集合
×
所要時間期待値dp
→
DP J
→
動的計画法
×
dp_g_bad
→
DP G
→
動的計画法
×
最長部分文字列
×
lcs
→
DP F
→
ABC170 E
×
Pythonでmultiset
×
平衡二分木
×
フェニック木
×
numba
→
RBST
→
abc170
×
heapq
×
ヒープキュー
×
セグメント木
×
フェニック木
×
座標圧縮
×
標準入出力でtle
→
ABC170 E
"
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, 4:46:43 PM
[Edit]