$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
基礎的な動的計画法トピック - ICPC 国内予選突破に向けて
Search
tsutaj
June 07, 2018
Programming
0
14
基礎的な動的計画法トピック - 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.5k
数え上げテクニック Hard
tsutaj
0
24
プログラミングコンテスト入門 - AtCoder Beginners Selection を解いてみよう
tsutaj
0
40
分割統治法 - 問題を小さく分けてまとめよう
tsutaj
0
27
包除原理 - 解ける数え上げの範囲を広げよう
tsutaj
0
22
文字列 DP (応用編) - 文字列を華麗に扱おう
tsutaj
0
19
競技プログラミングのための FFT - 多項式乗算の高速化ことはじめ
tsutaj
0
14
確率 DP を極めよう - 確率と期待値の問題解説
tsutaj
0
30
Other Decks in Programming
See All in Programming
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
120
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
440
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
1.6k
社内オペレーション改善のためのTypeScript / TSKaigi Hokuriku 2025
dachi023
1
570
STYLE
koic
0
160
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.5k
Integrating WordPress and Symfony
alexandresalome
0
150
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
認証・認可の基本を学ぼう後編
kouyuume
0
180
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
120
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
Fireside Chat
paigeccino
41
3.7k
Designing Experiences People Love
moore
143
24k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Done Done
chrislema
186
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
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