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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tsutaj
June 07, 2018
Programming
0
16
基礎的な動的計画法トピック - 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.2k
競プロ作問を支える技術
tsutaj
0
1.6k
数え上げテクニック Hard
tsutaj
0
25
プログラミングコンテスト入門 - AtCoder Beginners Selection を解いてみよう
tsutaj
0
42
分割統治法 - 問題を小さく分けてまとめよう
tsutaj
0
28
包除原理 - 解ける数え上げの範囲を広げよう
tsutaj
0
23
文字列 DP (応用編) - 文字列を華麗に扱おう
tsutaj
0
20
競技プログラミングのための FFT - 多項式乗算の高速化ことはじめ
tsutaj
0
16
確率 DP を極めよう - 確率と期待値の問題解説
tsutaj
0
31
Other Decks in Programming
See All in Programming
CSC307 Lecture 13
javiergs
PRO
0
310
Windows on Ryzen and I
seosoft
0
210
Railsの気持ちを考えながらコントローラとビューを整頓する/tidying-rails-controllers-and-views-as-rails-think
moro
4
380
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
360
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
290
開発ステップを細分化する、破綻しないAI開発体制
kspace
0
110
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
600
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
120
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
490
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
200
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
250
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
320
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
220
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
200
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
Leo the Paperboy
mayatellez
4
1.5k
We Have a Design System, Now What?
morganepeng
55
8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Skip the Path - Find Your Career Trail
mkilby
1
72
Odyssey Design
rkendrick25
PRO
2
540
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
200
Accessibility Awareness
sabderemane
0
74
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