Upgrade to Pro — share decks privately, control downloads, hide ads and more …

おしゃれなアルゴリズム

eTakazawa
February 22, 2020

 おしゃれなアルゴリズム

本スライドは某LT用に作成しました.厳密性より,非競プロerに向けて面白さを重視しています.
過去問題の解説です.

eTakazawa

February 22, 2020
Tweet

More Decks by eTakazawa

Other Decks in Programming

Transcript

  1. ͓͠ΌΕͳΞϧΰϦζϜ @utsubo_21 ※ ຊεϥΠυ͸๭LT༻ʹ࡞੒͠·ͨ͠
 ɹݫີੑΑΓɼඇڝϓϩerʹ޲͚ͯ໘ന͞Λॏࢹ͍ͯ͠·͢

  2. ࠓ·Ͱղ͍ͨ ΞϧΰϦζϜͷ໰୊ͷத͔Β  

  3. ಛʹ͓΋͠Ζ͔ͬͨ໰୊Λ pickup  

  4.   • ম೑Λ͍ͯ͠·͢ • ೑͸ॏͳ͍ͬͯΔ෦෼͕ੜম͚ʹ • ͍͔ͭ͘೑ΛऔΓআ͘͜ͱͰ
 Ͱ͖Δ͚ͩ৯΂ΒΕΔ෦෼Λ௕͍ͨ͘͠ Question

    * CODE FESTIVAL 2015 ຊઓ ম೑ͷୡਓ
  5.   • ম೑Λ͍ͯ͠·͢ • ೑͸ॏͳ͍ͬͯΔ෦෼͕ੜম͚ʹ • ͍͔ͭ͘೑ΛऔΓআ͘͜ͱͰ
 Ͱ͖Δ͚ͩ৯΂ΒΕΔ෦෼Λ௕͍ͨ͘͠ Question

    * CODE FESTIVAL 2015 ຊઓ ম೑ͷୡਓ
  6.   • ম೑Λ͍ͯ͠·͢ • ೑͸ॏͳ͍ͬͯΔ෦෼͕ੜম͚ʹ • ͍͔ͭ͘೑ΛऔΓআ͘͜ͱͰ
 Ͱ͖Δ͚ͩ৯΂ΒΕΔ෦෼Λ௕͍ͨ͘͠ Question

    * CODE FESTIVAL 2015 ຊઓ ম೑ͷୡਓ
  7.   • ম೑Λ͍ͯ͠·͢ • ೑͸ॏͳ͍ͬͯΔ෦෼͕ੜম͚ʹ • ͍͔ͭ͘೑ΛऔΓআ͘͜ͱͰ
 Ͱ͖Δ͚ͩ৯΂ΒΕΔ෦෼Λ௕͍ͨ͘͠ Question

    * CODE FESTIVAL 2015 ຊઓ ম೑ͷୡਓ
  8. Question • ೖྗ - ೑ (Ґஔɼ௕͞) × Nݸ ( N

    ≦ 10^5 ) - ໢ͷ௕͞ M ( M ≦ 10^5 ) • ໨త - ֤೑ʹ͍ͭͯম͔͘ম͔ͳ͍͔બͼɼ
 ೑͕ॏͳΒͣম͚Δ௕͞ͷ૯࿨Λ࠷େԽ͠ग़ྗ   ೑1 ೑2 ೑3 ໢
  9. Question • ೖྗ - ೑ (Ґஔɼ௕͞) × Nݸ ( N

    ≦ 10^5 ) - ໢ͷ௕͞ M ( M ≦ 10^5 ) • ໨త - ֤೑ʹ͍ͭͯম͔͘ম͔ͳ͍͔બͼɼ
 ೑͕ॏͳΒͣম͚Δ௕͞ͷ૯࿨Λ࠷େԽ͠ग़ྗ   ೑1 ೑2 ೑3 ໢
  10. Question • ೖྗ - ೑ (Ґஔɼ௕͞) × Nݸ ( N

    ≦ 10^5 ) - ໢ͷ௕͞ M ( M ≦ 10^5 ) • ໨త - ֤೑ʹ͍ͭͯম͔͘ম͔ͳ͍͔બͼɼ
 ೑͕ॏͳΒͣম͚Δ௕͞ͷ૯࿨Λ࠷େԽ͠ग़ྗ   ೑1 ೑2 ೑3 ໢
  11. ΋͏গ͠ෳࡶͳྫ   ྫɽ

  12. ΋͏গ͠ෳࡶͳྫ   ೑ؒͷґଘ͕૿͑ɼ೉͍͠… ྫɽ

  13.   • ”೑͕ॏͳ͍ͬͯΔ” or ”Կ΋ͳ͍” ۠ؒ
 ͸௕͕͞Ք͛ͳ͍ • ”શମͷ௕͞M

    ʔ ম͚ͳ͍۠ؒͷ௕͞”
 Ͱ౴͕͑ग़Δ ղ๏Λࢧ͑Δߟ͑ํ ম͚Δ෦෼Λ௕͘ → ম͚ͳ͍෦෼Λ୹͘
  14. ղ๏   ͋Δ೑ͷબͼํΛͨ࣌͠ͷ ম͚ͳ͍෦෼ͷ௕͞Λ஌Γ͍ͨ ೑1 ೑2 ೑3

  15. ղ๏   ఱ࠽తͳͻΒΊ͖Ͱ
 ೑ͷ௕͞ʹ߹Θͤͯ໼ҹΛॻ͍ͯΈΔ

  16. ղ๏   ೑1 ೑2 ೑3 ఱ࠽తͳͻΒΊ͖Ͱ
 ೑ͷ௕͞ʹ߹Θͤͯ໼ҹΛॻ͍ͯΈΔ

  17. ղ๏   ͞Βʹఱ࠽తͳͻΒΊ͖Ͱ ”Կ΋ͳ͍” ෦෼Λද͢໼ҹΛ௥Ճ

  18. ղ๏   ࠨ୺͔Βӈ୺΁໼ҹΛḷͬͯΈΔ

  19. ղ๏   ྫ͑͹ɼ྘ͷܦ࿏

  20. ղ๏   ɹɹͷΈΛম͘৔߹Λදݱ
 ʢͱ”Կ΋ͳ͍”۠ؒ 4ͭ෼ʣ ೑1 ೑1 ”Կ΋ͳ͍”۠ؒ

  21. ղ๏   “Կ΋ͳ͍”۠ؒͷ௕͞Λ஌Γ͍ͨ ʢ㲎 શମͷ௕͞ʔম͚ͳ͍෦෼ͷ௕͞ʹম͚Δ௕͞ʣ

  22. ղ๏   ໼ҹʹίετΛ෇༩ 1 1 1 1 1 1

    1 1 0 0 0
  23. ղ๏   ܦ࿏্ͷ໼ҹͷίετͷ૯࿨
 ʹ ম͚ͳ͍෦෼(Կ΋ͳ͍෦෼)ͷ௕͞ ʹͳ͍ͬͯΔ 1 1 1

    1 1 1 1 1 0 0 0
  24. ղ๏   ”ॏͳ͍ͬͯΔ” ෦෼͸Ͳ͏දݱ͢Δ͔

  25. ղ๏   ”ॏͳ͍ͬͯΔ” ෦෼͸Ͳ͏දݱ͢Δ͔ → ٯ޲͖ͷ໼ҹΛுΓ·͢ʢίετ1ʣ 1 1 1

  26. ղ๏   ઌͱಉ༷ʹࠨ୺͔Βӈ୺΁໼ҹΛḷΔ

  27. ղ๏   ྫ͑͹ɼ྘ͷܦ࿏

  28. ղ๏   1 1 1 1 ೑1 ೑2 ɹɹͱɹɹΛম͘৔߹Λදݱ

    ೑1 ೑2 ”Կ΋ͳ͍”۠ؒ ”ॏͳ͍ͬͯΔ”۠ؒ
  29. ղ๏   1 1 1 1 ম͚ͳ͍۠ؒͷ௕͞͸ 4 ”Կ΋ͳ͍”۠ؒ

    ”ॏͳ͍ͬͯΔ”۠ؒ
  30. ղ๏ ·ͱΊ   1 1 1 1 1 1

    1 1 1 1 1 ࠨ୺͔Βӈ୺΁ͷܦ࿏্ͷίετͷ૯࿨ ʹ ম͚ͳ͍෦෼ͷ௕͞
  31. ղ๏ ·ͱΊ   1 1 1 1 1 1

    1 1 1 1 1 ͭ·Γɼࠨ୺͔Βӈ୺΁ͷ࠷୹ܦ࿏ ʹ ম͚ͳ͍෦෼ͷ௕͕͞࠷খͷ೑ͷબͼํ
  32. ղ๏ ·ͱΊ   1 1 1 1 1 1

    1 1 1 1 1 ͭ·Γɼ࠷୹ܦ࿏௕͕෼͔Ε͹ྑ͍ → ؆୯ʂ
  33. ղ๏ ·ͱΊ   1 1 1 1 1 1

    1 1 1 1 1 ͭ·Γɼ࠷୹ܦ࿏௕͕෼͔Ε͹ྑ͍ → ؆୯ʂ ܭࢉྔతʹ͸ɿ શ୳ࡧ O(2^N) → ຊख๏ O((M+N)logM)
  34. ͋ͱ͕͖ • ࠷୹ܦ࿏໰୊ʹؼணͰ͖ͯ࠷ߴʹ͓͠ΌΕ - ম೑ʹߦ͘ͱ͖͸ࢥ͍ग़ͯ͠Ͷ • ໘നΈΛײͨ͡ํ͸ڝϓϩ΍͍ͬͯͩ͘͞ • ࠷େԽΛ͢Δ࣌͸Կ͔ͷ࠷খԽʹ
 ஔ͖׵͑ΒΕͳ͍͔ߟ͑Δ

    - “࠷େԽΛ࠷খԽʹมܗͯ͠ɼ࠷খΧοτʹؼண” ͸ׂͱయܕΒ͍͠ʢࢀߟɿ೩΍͢ຒΊΔ໰୊ʣ   https://www.slideshare.net/shindannin/project-selection-problem
  35. ͓·͚ • ൈ͚͍ͯΔେࣄͳߟ࡯ - ઌͷܦ࿏Ͱ͸ɼ3ຕҎ্೑͕ॏͳΔબͼํΛ
 දݱͰ͖ͳ͍ - ॏͳͬͨ෦෼Λ༨ܭʹίετͱͯ͠Χ΢ϯτͯ͠ ͠·͏ɽ͕ɼͦ΋ͦ΋3ຕҎ্ॏͳΔ೑ͷબͼํ ͸ɼ࠷దղʹͳΓಘͳ͍

    • ެࣜϖʔδͷղઆΛಡΜͰ͍ͩ͘͞ • ࢲ͕ॻ͍ͨίʔυ͸ͪ͜Β   https://www.slideshare.net/chokudai/code-festival-2015-final https://code-festival-2015-final-open.contest.atcoder.jp/submissions/10197952