SlideShare a Scribd company logo
1 of 77
Download to read offline
動的計画法:DP
北海道大学 情報科学研究科
情報知識ネットワーク研究室 修士1年
栗田 和宏
DPって何?
DP(Dynamic Programming)とはある計算式に

対して,一度計算した結果を記憶しておき,

効率化を図ることである.
記憶するメモリのことをDPテーブルと呼ぶ
具体例:フィボナッチ数
DPを使ってフィボナッチ数を求めてみよう!!
具体例:フィボナッチ数
fibonacci(5) → fibonacci(4) + fibonacci(3)
具体例:フィボナッチ数
fibonacci(5) → fibonacci(4) + fibonacci(3)
fibonacci(4) → *fibonacci(3) + fibonacci(2)
具体例:フィボナッチ数
fibonacci(5) → fibonacci(4) + fibonacci(3)
fibonacci(4) → *fibonacci(3) + fibonacci(2)
fibonacci(3) → *fibonacci(2) + fibonacci(1)
具体例:フィボナッチ数
fibonacci(5) → fibonacci(4) + fibonacci(3)
fibonacci(4) → *fibonacci(3) + fibonacci(2)
fibonacci(3) → *fibonacci(2) + fibonacci(1)
fibonacci(2) → *fibonacci(1) + fibonacci(0)
具体例:フィボナッチ数
fibonacci(5) → fibonacci(4) + fibonacci(3)
fibonacci(4) → *fibonacci(3) + fibonacci(2)
fibonacci(3) → *fibonacci(2) + fibonacci(1)
fibonacci(2) → *fibonacci(1) + fibonacci(0)
*fibonacci(1) → 1

…
具体例:フィボナッチ数
1, 1, ?, ?, ?, ?
具体例:フィボナッチ数
1, 1, 2, ?, ?, ?
具体例:フィボナッチ数
1, 1, 2, 3, ?, ?
具体例:フィボナッチ数
1, 1, 2, 3, 5, ?
具体例:フィボナッチ数
1, 1, 2, 3, 5, 8
具体例:フィボナッチ数
愚直なアルゴリズム

計算量:O(2n)
DPを用いたアルゴリズム

計算量:O(n)
なぜ計算量が落ちたか?
f(5)
f(4) f(3)
f(3) f(2) f(2) f(1)
なぜ計算量が落ちたか?
f(5)
f(4) f(3)
f(3) f(2) f(2) f(1)
なぜ計算量が落ちたか?
f(5)
f(4) f(3)
f(3) f(2) f(2) f(1)
なぜ計算量が落ちたか?
f(5)
f(4) f(3)
f(3) f(2) f(2) f(1)
ソースコードの例
https://github.com/kazu0423/procon_example/
blob/master/fibonacci_dp.cpp
最長共通部分列
最長共通部分列(Longest Common Subsequence)
とは2つの与えられた列XとYの最長の共通部分列
を求める問題である.
部分列とは?
列X = abcの部分列

{emp, a, b, c, ab, bc, ac, abc} (emp:空集合)
大雑把に言うと元の文字列の順番は変えずに,

幾つか文字を取ってきてできる列
愚直な解法
列Xと列Yの部分列を列挙する.
列Xの1つの部分列と列Yの全ての部分列を比較

して共通部分の長さを求める
最長なものが見つかる
n = max(|X|, |Y|)
愚直な解法
列Xと列Yの部分列を列挙する.→ O(2n)
列Xの1つの部分列と列Yの全ての部分列を比較

して共通部分の長さを求める → O(n3)
最長なものが見つかる → O(1)
n = max(|X|, |Y|)
自明な考察
例えば列Xと列YのLCSがわかっていると仮定

する.
このとき,X’ = X + aと Y’ = Y + aのLCSは?
自明な考察
例えば列Xと列YのLCSがわかっていると仮定

する.
このとき,X’ = X + aと Y’ = Y + aのLCSは?
当然,列X’と列Y’とのLCS + 1である.
記憶する計算
列Xiと列YjのLCSがわかっていれば,列Xi+1と

列Yj+1のLCSをO(1)求められる.
記憶する計算
列Xの先頭からi個の列をXiとする.
列Xiと列YjのLCSがわかっていれば,列Xi+1と

列Yj+1のLCSをO(1)求められる.
ということは列Xiと列YjのLCSを記憶しておけば
良い.
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0
2 0
3 0
4 0
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0
3 0
4 0
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0
4 0
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2 3 3 3 3
5 0 1 2 3 4 4 4
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2 3
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2 3
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2 3
5 0
X = abacd,Y = abcded
DPテーブル
XY 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1
2 0 1 2 2 2 2 2
3 0 1 2 2 2 2 2
4 0 1 2 3 3
5 0
X = abacd,Y = abcded
更新の計算量
DPテーブルの各マスはO(1)で更新可能.
マスの数は|X| * |Y|
計算量はO(|X| * |Y|)になる.
発展問題としてLongest common substringという

問題もある.
ソースコードの例
https://github.com/kazu0423/procon_example/
blob/master/longest_common_subsequence.cpp
連鎖行列積
n個の行列の連鎖M1,M2,…,Mnが与えられたと
き,乗算回数の最小を求めよ
制約

1 < n, r, c < 100
問題例
3
5
8
5 9 2
1 6 3
7 2 4
6 4 8
乗算回数:0回
問題例
15 27 6
25 45 10
40 72 16
1 6 3
7 2 4
6 4 8
乗算回数:9回
問題例
15 27 6
25 45 10
40 72 16
1 6 3
7 2 4
6 4 8
乗算回数:36回
掛け算‼
問題例
3
5
8
5 9 2
1 6 3
7 2 4
6 4 8
乗算回数:0回
問題例
3
5
8
80 56 67
乗算回数:9回
問題例
3
5
8
80 56 67
乗算回数:18回
掛け算‼
発展:連鎖行列積
行列の乗算の順番によって乗算回数が大きく異な
る.
乗算回数の最小値はいくつか?
愚直な解放
やっぱりまずは全探索.

これで解ければ一番楽‼
愚直な解放
やっぱりまずは全探索.

これで解ければ一番楽‼
しかし全探索はO(n!)かかる → nの最大値は100

これはまずい
愚直な解放
やっぱりまずは全探索.

これで解ければ一番楽‼
しかし全探索はO(n!)かかる → nの最大値は100

これはまずい
DPを使おう
何を記憶するか?
行列M1とM2を考える.M1は(c1, r1),M2は(c2, r2)の
行列である.
これらの行列の乗算回数はr1*c1*r2である.
何を記憶するか?
行列M1とM2を考える.M1は(c1, r1),M2は(c2, r2)の
行列である.
これらの行列の乗算回数はr1*c1*r2である.
しかし,我々が知りたいのはM1M2M3…Mnの

乗算回数である.
何を記憶するか?
ここで,M’1 = M1…MkとM’2 = Mk + 1…Mmに

分けて考える
もし,M’1とM’2を作る最小の乗算回数がわかれば
M’1M’2を作る最小の乗算回数がわかる.
何を記憶するか?
ここで,M’1 = M1…MkとM’2 = Mk + 1…Mmに

分けて考える
もし,M’1とM’2を作る最小の乗算回数がわかれば
M’1M’2を作る最小の乗算回数がわかる.
覚えておこう
何を記憶するか?
M’1とM’2の作り方はO(m)通りなので,O(m)通りの
中の最小値を求める.
まとめるとDPテーブルにはi番目からj番目までの

最小の乗算回数を記憶させることになる.
DPテーブル
ij 1 2 3 4 5 6
1 0 inf inf inf inf inf
2 emp 0 inf inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 inf inf inf inf inf
2 emp 0 inf inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 inf inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 inf inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 inf inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 8 inf inf
4 emp emp emp 0 inf inf
5 emp emp emp emp 0 inf
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 8 inf inf
4 emp emp emp 0 8 inf
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 8 inf inf
4 emp emp emp 0 8 inf
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 inf inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 8 inf inf
4 emp emp emp 0 8 inf
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 inf inf inf
3 emp emp 0 8 inf inf
4 emp emp emp 0 8 inf
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 inf inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 24 inf inf
2 emp 0 8 16 inf inf
3 emp emp 0 8 16 inf
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
DPテーブル
ij 1 2 3 4 5 6
1 0 8 16 24 32 40
2 emp 0 8 16 24 32
3 emp emp 0 8 16 24
4 emp emp emp 0 8 16
5 emp emp emp emp 0 8
6 emp emp emp emp emp 0
M1M2 M3 M4 M5 M6  簡単のためすべて2*2行列
更新の計算量
大雑把に考えると一つのマスを更新するのに

最悪でもO(n)時間で更新できる.
マスの数はn2なので更新にはO(n3)時間がかかる.
更新の計算量
大雑把に考えると一つのマスを更新するのに

最悪でもO(n)時間で更新できる.
マスの数はn2なので更新にはO(n3)時間がかかる.
これならnが100でも余裕で間に合う
ソースコードの例
https://github.com/kazu0423/procon_example/
blob/master/
matrix_chain_multiplication_problem.cpp
まとめ
DPとは途中結果を記憶して同じ計算をしないよう
にするテクニック
DPの計算量を出すときは

マスの数 * 1マスを埋めるのにかかる時間
他にも有名な問題としてナップサック問題

というのもある.

More Related Content

What's hot

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズムTakuya Akiba
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木理玖 川崎
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
inversion counting
inversion countinginversion counting
inversion countingtmaehara
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)Kensuke Otsuki
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系tmaehara
 
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Inc.
 

What's hot (20)

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
双対性
双対性双対性
双対性
 
inversion counting
inversion countinginversion counting
inversion counting
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
 
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説
 

Viewers also liked

定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!teapipin
 
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回Hideaki Nagamine
 
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回Hideaki Nagamine
 
2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会YuichiroMukai
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説AtCoder Inc.
 
AtCoder Regular Contest 028 解説
AtCoder Regular Contest 028 解説AtCoder Regular Contest 028 解説
AtCoder Regular Contest 028 解説AtCoder Inc.
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Inc.
 
ダイクストラ法
ダイクストラ法ダイクストラ法
ダイクストラ法ohsofty
 
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説AtCoder Inc.
 
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回Hideaki Nagamine
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Inc.
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Inc.
 

Viewers also liked (20)

定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!
 
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
 
グラフを扱おう:最短路問題
グラフを扱おう:最短路問題グラフを扱おう:最短路問題
グラフを扱おう:最短路問題
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
 
2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
初めてのプロコン
初めてのプロコン初めてのプロコン
初めてのプロコン
 
DP特集
DP特集DP特集
DP特集
 
AtCoder Regular Contest 028 解説
AtCoder Regular Contest 028 解説AtCoder Regular Contest 028 解説
AtCoder Regular Contest 028 解説
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
 
ダイクストラ法
ダイクストラ法ダイクストラ法
ダイクストラ法
 
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説
 
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回
 
Meet inthemiddle
Meet inthemiddleMeet inthemiddle
Meet inthemiddle
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 

More from HCPC: 北海道大学競技プログラミングサークル

More from HCPC: 北海道大学競技プログラミングサークル (20)

写像 12 相
写像 12 相写像 12 相
写像 12 相
 
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しいACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
 
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
 
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取りACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
 
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
 
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探しACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
 
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 

Recently uploaded

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

動的計画法