Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
基礎的な動的計画法トピック - ICPC 国内予選突破に向けて
Search
tsutaj
June 07, 2018
Programming
0
7
基礎的な動的計画法トピック - ICPC 国内予選突破に向けて
スライド内のリンクを見たい方はこちら:
https://hcpc-hokudai.github.io/archive/dynamic_programming_fundamental_dp.pdf
tsutaj
June 07, 2018
Tweet
Share
More Decks by tsutaj
See All by tsutaj
正しく作るランダムケース
tsutaj
0
1.1k
競プロ作問を支える技術
tsutaj
0
1.3k
数え上げテクニック Hard
tsutaj
0
15
プログラミングコンテスト入門 - AtCoder Beginners Selection を解いてみよう
tsutaj
0
28
分割統治法 - 問題を小さく分けてまとめよう
tsutaj
0
21
包除原理 - 解ける数え上げの範囲を広げよう
tsutaj
0
18
文字列 DP (応用編) - 文字列を華麗に扱おう
tsutaj
0
9
競技プログラミングのための FFT - 多項式乗算の高速化ことはじめ
tsutaj
0
8
確率 DP を極めよう - 確率と期待値の問題解説
tsutaj
0
26
Other Decks in Programming
See All in Programming
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
310
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
930
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
5つのアンチパターンから学ぶLT設計
narihara
1
110
関数型まつり2025登壇資料「関数プログラミングと再帰」
taisontsukada
2
850
Effect の双対、Coeffect
yukikurage
5
1.5k
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
350
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
490
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
190
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
180
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
77
9.4k
It's Worth the Effort
3n
185
28k
Code Review Best Practice
trishagee
68
18k
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
4 Signs Your Business is Dying
shpigford
184
22k
The Language of Interfaces
destraynor
158
25k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building a Scalable Design System with Sketch
lauravandoore
462
33k
What's in a price? How to price your products and services
michaelherold
246
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Transcript
جૅతͳಈతܭը๏τϐοΫ ICPC ࠃ༧બಥഁʹ͚ͯ tsutaj (@tsutaj) Hokkaido University M1 June 7,
2018 tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 1 / 14
1 ͡Ίʹ 2 ෦ 3 φοϓβοΫ 4 ࣮ફʹઓʂ tsutaj (Hokkaido
Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 2 / 14
ಈతܭը๏ͱ ಈతܭը๏ (Dynamic Programming) Λෳͷ෦ʹ͚ͯɼͦΕΛ౷߹ͯ͠ղ͘ख๏ ಉ͡ͱΈͳͤΔঢ়ଶΛݟۃΊͯɼ·ͱΊΔ ൚༻ੑ͕ΊͪΌΊͪΌ͋Δ tsutaj (Hokkaido Univ.)
جૅతͳಈతܭը๏τϐοΫ June 7, 2018 3 / 14
ঢ়ଶΛ·ͱΊΔɺͱʁ ঢ়ଶΛ·ͱΊΔͱͲ͏͍͏͜ͱͳͷ͔ʁ ྫͱͯ͠ҎԼͷΛߟ͑Δ ֊ஈͷ΅Γ N ஈ͔ΒͳΔ֊ஈ͕͋Δ 1 ஈͷ΅Δ͔ɺ2 ஈҰؾʹͷ΅Δ͔Ͱ͖Δ ͪΐ͏Ͳ
N ஈͷ΅Δํ๏Կ௨Γ͋Δ͔ʁ ྫ͑ 4 ஈͷ΅Δํ๏ɺ {1, 1, 1, 1} , {1, 1, 2} , {1, 2, 1} , {2, 1, 1} , {2, 2} ͷ 5 ௨Γ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 4 / 14
ঢ়ଶΛ·ͱΊΔɺͱʁ i ஈ·Ͱͷ΅ͬͨ࣌ͷ௨ΓΛΔͨΊʹɺͲΜͳใ͕Θ͔͍ͬͯ ΕΑ͍͔ʁ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7,
2018 5 / 14
ঢ়ଶΛ·ͱΊΔɺͱʁ i ஈ·Ͱͷ΅ͬͨ࣌ͷ௨ΓΛΔͨΊʹɺͲΜͳใ͕Θ͔͍ͬͯ ΕΑ͍͔ʁ Ұʹͷ΅ΕΔͷ 1 ஈ·ͨ 2 ஈͳͷ͔ͩΒɾɾɾ i
− 1 ஈ·Ͱͷ΅ͬͨ௨Γͱɺi − 2 ஈ·Ͱͷ΅ͬͨ௨Γ͕Θ ͔͍ͬͯΕɺٻΊΒΕͦ͏ʂ ௨Γͷใ͚ͩ͋ΕΑ͘ɺ۩ମతʹͲΜͳͷ΅Γ͔ͨΛ͖ͯͨ͠ ͔֮͑Δඞཁ͕ͳ͍ʂ ֊ஈͷ΅Γͷղ๏ ai := i ஈ·Ͱͷ΅Δ߹ͷ ͱͨ͠ͱ͖ɺ ai = 0 i < 0 1 i = 0 ai−1 + ai−2 ͦΕҎ֎ (1) ͑ͱͳΔͷ aN ͷ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 5 / 14
ঢ়ଶΛ·ͱΊΔɺͱʁ ͜ͷΑ͏ʹɺطʹܭࢉࡁΈͷใΛΈ߹Θͤͯʮ৽ͨͳใʯΛಘ ͍ͯ͘ํ๏͕ɺಈతܭը๏ʂ લͷঢ়ଶΛΈ߹ΘͤΔͨΊɺԽࣜͷܗʹͳΔ (ͪͳΈʹઌ΄ͲͷͰొͨ͠ྻϑΟϘφονྻͱಉ͡Ͱ͢) ্͑͛Ͱ͋Ζ͏͕࠷େɾ࠷খͰ͋Ζ͏͕ yes/no Ͱ͋Ζ͏ ͕ɺߟ͑ํશ͘ಉ͡ʂ ͖ͬ͞ͷͷ֦ுΛߟ͑ͯΈΑ͏
(ࢉΕ O(1) ͳͷצห) ͪΐ͏Ͳ N ஈͷ΅ΔΑ͏ͳͷ΅Γ͔ͨͷ͏ͪɺεςοϓͷ࠷খΛ DP Ͱղ͘ʹʁ ͪΐ͏Ͳ K εςοϓͰͪΐ͏Ͳ N ஈͷ΅ΕΔ͔Ͳ͏͔Λ DP Ͱղ͘ ʹʁ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 6 / 14
෦ ෦ ࣗવू߹ S = {a1, a2, · · ·
, aN } ͕͋Δ S ͷࣈͦΕͧΕ 1 ͚ͩ͑Δ S ͷࣈΛΈ߹Θͤͯ W Λ࡞Δ͜ͱՄೳ͔ʁ ྫ: S = {1, 2, 8} ͔Β W = 10 ࡞ΕΔ͕ɺW = 7 ࡞Εͳ͍ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 7 / 14
෦ ෦ ࣗવू߹ S = {a1, a2, · · ·
, aN } ͕͋Δ S ͷࣈͦΕͧΕ 1 ͚ͩ͑Δ S ͷࣈΛΈ߹Θͤͯ W Λ࡞Δ͜ͱՄೳ͔ʁ ྫ: S = {1, 2, 8} ͔Β W = 10 ࡞ΕΔ͕ɺW = 7 ࡞Εͳ͍ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) dp[i ൪ͷཁૉ·Ͱͬͯ][߹ܭ͕ j Ͱ͋Δঢ়ଶ] := True / False ભҠͲͷΑ͏ʹͳΔʁ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 7 / 14
෦ ෦ ࣗવू߹ S = {a1, a2, · · ·
, aN } ͕͋Δ S ͷࣈͦΕͧΕ 1 ͚ͩ͑Δ S ͷࣈΛΈ߹Θͤͯ W Λ࡞Δ͜ͱՄೳ͔ʁ ྫ: S = {1, 2, 8} ͔Β W = 10 ࡞ΕΔ͕ɺW = 7 ࡞Εͳ͍ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) dp[i ൪ͷཁૉ·Ͱͬͯ][߹ܭ͕ j Ͱ͋Δঢ়ଶ] := True / False ભҠͲͷΑ͏ʹͳΔʁ i ൪ͷཁૉΛʮ͠߹ΘͤΔʯ߹ͱʮ͋͠Θͤͳ͍ʯ߹͕͋Δ i ൪ͷཁૉͷΛ ai ͱ͓͘ ͋͠ΘͤΔͱɺ߹ܭ ai ૿͑Δ ˠ ߹ܭ͕ j − ai Ͱ͋Δঢ়ଶΛࢀরʂ ͋͠Θͤͳ͍ͱɺ߹ܭ૿͑ͳ͍ ˠ ߹ܭ͕ j Ͱ͋Δঢ়ଶΛࢀরʂ Ͳ͏࣮͢Ε͍͍ͷʁ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 7 / 14
෦ ͜ͷΑ͏ͳ࣮ʹͳΔ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 8
/ 14
෦ ֊ஈͷ΅Γͷͱ͖ͱಉ༷ʹɺyes / no Ҏ֎ʹ༷ʑͳܗʹൃలͰ ͖Δʂ ߹ܭ͕ͪΐ͏Ͳ W ʹͳΔΑ͏ͳཁૉͷબͼํԿ௨Γ͋Δʁ ߹ܭ͕ͪΐ͏Ͳ
W ʹͳΔΑ͏ͳཁૉͷબͼํͷதͰɺબͿཁૉͷ ࠷খ (࠷େ) ͍͘Β͔ʁ ू߹ S ͷཁૉΛΈ߹ΘͤͯͰ͖Δશ෦ͰԿ௨Γ͋Δʁ (Կ બͳ͍߹ͷ 0 Χϯτ) ઌ΄ͲͷԽࣜΛগ͠ม͑ΔͱରԠͰ͖ΔͷͰɺͬͯΈΑ͏ʂ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 9 / 14
φοϓβοΫ 01 φοϓβοΫ ༰ྔ C ͷφοϓβοΫͱɺN ݸͷ͕͋Δ i ൪ͷ༰ྔ ci
ͰɺͦͷՁ vi બΜͩͷ༰ྔͷ߹ܭ͕ C Λ͑ͳ͍ൣғͰɺΛࣗ༝ʹબͰ ͖Δ બΜͩͷՁͷ߹ܭͷ࠷େ͍͘Β͔ʁ Լͷը૾ͩͱՁͷ߹ܭ 8 υϧ͕࠷େ (༰ྔͷ߹ܭ 15 kg) tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 10 / 14
φοϓβοΫ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7,
2018 11 / 14
φοϓβοΫ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) dp[i ൪ͷ·Ͱͬͯ][༰ྔ߹ܭ͕ j] := Ձ߹ܭͷ࠷େ ભҠͲͷΑ͏ʹͳΔʁ
tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 11 / 14
φοϓβοΫ ԽࣜΛ࡞ͬͯΈΑ͏ʂ (ώϯτ: ೋ࣍ݩͷԽࣜ) dp[i ൪ͷ·Ͱͬͯ][༰ྔ߹ܭ͕ j] := Ձ߹ܭͷ࠷େ ભҠͲͷΑ͏ʹͳΔʁ
i ൪ͷΛʮ͠߹ΘͤΔʯ߹ͱʮ͋͠Θͤͳ͍ʯ߹͕͋Δ ͋͠ΘͤΔͱɺ༰ྔ߹ܭ ci ૿͑ɺՁ߹ܭ vi ૿͑Δ ༰ྔ߹ܭ͕ j − ci Ͱ͋Δঢ়ଶΛࢀর ͦͷঢ়ଶʹ͓͚ΔՁ߹ܭͷ࠷େʹ vi Λͨ͠ͷΛ͓͏ʂ ͋͠Θͤͳ͍ͱɺ༰ྔ߹ܭՁ߹ܭ૿͑ͳ͍ j Ͱ͋Δঢ়ଶΛࢀরʂ ͭ·Γɺ͖ͬ͞ͷ෦ͱߟ͑ํ΄΅ಉ͡ʂ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 11 / 14
φοϓβοΫ ͜ͷΑ͏ͳ࣮ʹͳΔ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 12
/ 14
ͦͷଞͷ ,2 ࠓճ࣌ؒͷ߹্ೖฤ͔͠ѻ͑·ͤΜ͕ɺಈతܭը๏ʹ͞·͟ ·ͳδϟϯϧ͕͋Γ·͢ bit DP (2017 D )
۠ؒ DP (2016 D ) ܻ DP DP ૠೖ DP ͳͲͳͲɾɾɾ ༷ʑͳछྨͷΛղ͍ͯͳΕ͓ͯ͘ͱɺରԠ͘͢͠ͳΔͱࢥ͍ ·͢ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 13 / 14
࣮ફ ࣮ࡍʹΛղ͍ͯΈΑ͏ʂ DP ͷΛूΊͨόʔνϟϧίϯςετΛ༻ҙ͍ͯ͠·͢ͷͰɺऔ ΓΜͰΈ͍ͯͩ͘͞ɻ Div1 Link Div2 Link ίϯςετ࣌ؒ
19:25 ʙ 20:40 Ͱ͢ɻ ऴྃޙʹ Div2 ͷ֤ʹ͍ͭͯ؆୯ʹղઆΛߦ͍·͢ɻ tsutaj (Hokkaido Univ.) جૅతͳಈతܭը๏τϐοΫ June 7, 2018 14 / 14