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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tsutaj
June 07, 2018
Programming
0
15
基礎的な動的計画法トピック - 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
42
分割統治法 - 問題を小さく分けてまとめよう
tsutaj
0
28
包除原理 - 解ける数え上げの範囲を広げよう
tsutaj
0
23
文字列 DP (応用編) - 文字列を華麗に扱おう
tsutaj
0
20
競技プログラミングのための FFT - 多項式乗算の高速化ことはじめ
tsutaj
0
14
確率 DP を極めよう - 確率と期待値の問題解説
tsutaj
0
30
Other Decks in Programming
See All in Programming
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.3k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
Basic Architectures
denyspoltorak
0
660
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
CSC307 Lecture 08
javiergs
PRO
0
670
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
今から始めるClaude Code超入門
448jp
8
8.6k
AtCoder Conference 2025
shindannin
0
1.1k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
160
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
Featured
See All Featured
Marketing to machines
jonoalderson
1
4.6k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
110
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Docker and Python
trallard
47
3.7k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
180
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
49
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Un-Boring Meetings
codingconduct
0
200
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