Submit Search
Upload
動的計画法
•
21 likes
•
25,925 views
京大 マイコンクラブ
Follow
競技プログラミング練習会2014 Normalで使ったスライドです。基本的な動的計画法の考え方について説明しています。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
Recommended
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
Chokudai search
Chokudai search
AtCoder Inc.
直交領域探索
直交領域探索
okuraofvegetable
双対性
双対性
Yoichi Iwata
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
線形計画法入門
線形計画法入門
Shunji Umetani
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Kensuke Otsuki
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
全域木いろいろ
全域木いろいろ
HCPC: 北海道大学競技プログラミングサークル
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
様々な全域木問題
様々な全域木問題
tmaehara
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
最適化の手前の数学
最適化の手前の数学
俊介 後藤
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
More Related Content
What's hot
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
Chokudai search
Chokudai search
AtCoder Inc.
直交領域探索
直交領域探索
okuraofvegetable
双対性
双対性
Yoichi Iwata
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
線形計画法入門
線形計画法入門
Shunji Umetani
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Kensuke Otsuki
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
全域木いろいろ
全域木いろいろ
HCPC: 北海道大学競技プログラミングサークル
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
様々な全域木問題
様々な全域木問題
tmaehara
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
What's hot
(20)
動的計画法を極める!
動的計画法を極める!
Chokudai search
Chokudai search
直交領域探索
直交領域探索
双対性
双対性
Rolling hash
Rolling hash
最大流 (max flow)
最大流 (max flow)
Union find(素集合データ構造)
Union find(素集合データ構造)
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
線形計画法入門
線形計画法入門
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
全域木いろいろ
全域木いろいろ
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
ウェーブレット木の世界
ウェーブレット木の世界
指数時間アルゴリズム入門
指数時間アルゴリズム入門
様々な全域木問題
様々な全域木問題
充足可能性問題のいろいろ
充足可能性問題のいろいろ
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Similar to 動的計画法
最適化の手前の数学
最適化の手前の数学
俊介 後藤
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
Pfds20120304
Pfds20120304
Seizan Shimazaki
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
T77 episteme
T77 episteme
えぴ 福田
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
sleepy_yoshi
全探索
全探索
Ryunosuke Iwai
AtCoder Regular Contest 017
AtCoder Regular Contest 017
AtCoder Inc.
AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説
AtCoder Inc.
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
Kazuma Mikami
cp-5. 繰り返し計算
cp-5. 繰り返し計算
kunihikokaneko1
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
sleepy_yoshi
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
Similar to 動的計画法
(13)
最適化の手前の数学
最適化の手前の数学
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Pfds20120304
Pfds20120304
Introduction to NumPy & SciPy
Introduction to NumPy & SciPy
T77 episteme
T77 episteme
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
全探索
全探索
AtCoder Regular Contest 017
AtCoder Regular Contest 017
AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
cp-5. 繰り返し計算
cp-5. 繰り返し計算
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
More from 京大 マイコンクラブ
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
京大 マイコンクラブ
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
京大 マイコンクラブ
Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
Geometry with Unity
Geometry with Unity
京大 マイコンクラブ
セミコロンレスc++
セミコロンレスc++
京大 マイコンクラブ
エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
女の子になれなかった人のために
女の子になれなかった人のために
京大 マイコンクラブ
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
京大 マイコンクラブ
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
京大 マイコンクラブ
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
Altseed
Altseed
京大 マイコンクラブ
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
More from 京大 マイコンクラブ
(20)
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
Common Lisp入門
Common Lisp入門
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
Geometry with Unity
Geometry with Unity
セミコロンレスc++
セミコロンレスc++
エンジニアと健康
エンジニアと健康
女の子になれなかった人のために
女の子になれなかった人のために
Pietで競プロしよう
Pietで競プロしよう
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
Altseed
Altseed
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Recently uploaded
(12)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
動的計画法
1.
動的計画法
2.
動的計画法 ●問題を複数の部分問題に分割して、部分問題の 計算結果を利用して元の問題を解く手法 ●効率的なアルゴリズムを作るときによく使われ る一般的な方法
3.
動的計画法 ●例 フィボナッチ数の計算 ●フィボナッチ数の定義通りプログラムを書くと こうなる int fib(unsigned int
n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n-1) + fib(n-2); } F0=0, F1=1, Fn=Fn−1+Fn−2 (n≥2)
4.
動的計画法 ●これだと、 ぐらいまでしか計算できない ● の指数時間アルゴリズム n = 40 fib(8) =fib(7)
+ fib(6) =(fib(6) + fib(5)) + (fib(5) + fib(4)) =((fib(5) + fib(4)) + (fib(4) + fib(3)) + ((fib(4) + fib(3)) + (fib(3) + fib(2))) =(((fib(4) + fib(3)) + (fib(3) + fib(2))) + ((fib(3) + fib(2)) + (fib(2) + fib(1))) + (((fib(3) + fib(2)) + (fib(2) + fib(1)) + ((fib(2) + fib(1)) + (fib(1) + fib(0))) O(1.619n )
5.
動的計画法 ●計算過程を見ると、何回も同じ引数で函数を呼 び出している ●この函数は同じ引数なら常に同じ値を返すか ら、一度計算した内容を再利用すれば良さそう ●これが動的計画法の基本的アイデア
6.
動的計画法 ●改良版フィボナッチ数の計算 int fib(unsigned int
n) { vector<int> ary(n+1); ary[0] = 0; ary[1] = 1; for(int i = 2; i <= n; ++i) ary[i] = ary[i-1] + ary[i-2]; return ary[n]; }
7.
動的計画法 ● の線形時間アルゴリズムになった ● ぐらいまで対応できる ●もっとも、 ぐらいでint型の整数だとオーバー フローする ● 番目のフィボナッチ数を定数 で割った余りを求 める問題などでつかえる ●実際には対数時間アルゴリズムも存在する O(n) n = 107 n
= 47 n k
8.
動的計画法 ●動的計画法が有効な問題の一つがナップサック 問題 ●問題パターンとしてはよく出題される ●社会での実用上も大事な問題
9.
ナップサック問題 ● 個の荷物があり、それぞれ価値 、体積 で ある。 ●容積 のナップサックがある。 ●体積の合計が を超えない範囲で荷物を詰めた とき、その価値の合計の最大値はいくつか? ●条件 n Pi Vi C C 1≤n≤1,000
1≤Pi≤1,000,000,000 1≤V i≤1,000 1≤C≤1,000
10.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150
11.
ナップサック問題 ●ナイーブ(ばか正直)な解法 ●それぞれの荷物について、ナップサックに入れるか 入れないかの2通りを調べる ●体積の合計が を越えない入れ方の中で、価値が最 大になるものを選ぶC
12.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 0 体積 0
13.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 55 体積 40
14.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 61 体積 26
15.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 116 体積 66
16.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 82 体積 97
17.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 137 体積 137
18.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 143 体積 133
19.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 198 体積 173
20.
ナップサック問題 価値 55 体積 40 価値
82 体積 97 価値 38 体積 19 価値 63 体積 32 価値 61 体積 26 容積 150 合計:価値 217 体積 117
21.
ナップサック問題 ●ナイーブ(ばか正直)な解法 ●実装としては次のようにすると簡潔になる・多少高 速化する ●http://inside/~prime/procon/2014/normal/napsac.cpp ●ナップサックの空きと今何番目の荷物を見ている か、荷物の配列を引数に取る
22.
ナップサック問題 ●ナイーブ(ばか正直)な解法 ● 個の荷物があるとき、調べるのは 通り ●問題の条件は だった ● だとだいたい 年かかる n 2n 3.4×10285 n=1000 1≤n≤1,000 1≤Pi≤1,000,000,000 1≤V
i≤1,000 1≤C≤1,000
23.
ナップサック問題 ●ここで動的計画法を使う ●荷物 を見ていて残り容積が の時の価値の最 大値を記憶しておけば良い ● になり、問題の条件でも時間内に解ける ●実際のコード ●http://inside/~prime/procon/2014/normal/napsac_dp.cpp i v O(nV )
24.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 1 0 2 0 3 0 4 0 5 0 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
25.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 1 0 2 0 3 0 4 0 5 0 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
26.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 1 0 0 2 0 3 0 4 0 5 0 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
27.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 1 0 0 2 0 2 3 0 4 0 5 0 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
28.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 1 0 0 2 0 2 3 0 2 4 0 2 5 0 2 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
29.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 0 1 0 0 0 2 0 2 2 3 0 2 5 4 0 2 5 5 0 2 7 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
30.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 0 1 0 0 0 2 0 2 2 3 0 2 5 4 0 2 5 5 0 2 7 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
31.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 0 0 1 0 0 0 3 2 0 2 2 3 3 0 2 5 5 4 0 2 5 8 5 0 2 7 8 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
32.
ナップサック問題 ●動的計画法で解くイメージ vi 0 1
2 3 0 0 0 0 0 1 0 0 0 3 2 0 2 2 3 3 0 2 5 5 4 0 2 5 8 5 0 2 7 8 価値 2 体積 2 価値 5 体積 3 価値 3 体積 1
33.
補足 ●ナップサック問題であればいつでも動的計画法 を使うわけではない ●条件が のとき、動的計画法では解けないが、ナイーブな解 法を使えば解ける ●条件をよく読んで使い分ける 1≤n≤20 1≤Pi≤1,000,000,000 1≤V i≤1,000,000,000
1≤C≤1,000,000,000
34.
参考文献 ●プログラミングコンテストでの動的計画法 ●http://www.slideshare.net/iwiwi/ss-3578511
Download now