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

数え上げテクニック Hard

Avatar for tsutaj tsutaj
October 28, 2019

数え上げテクニック Hard

スライド内のリンクを見たい方はこちら:https://hcpc-hokudai.github.io/archive/math_enumeration_hard_001.pdf

Avatar for tsutaj

tsutaj

October 28, 2019
Tweet

More Decks by tsutaj

Other Decks in Programming

Transcript

  1. ਺্͑͛ςΫχοΫ Hard tsutaj (@tsutaj) Hokkaido University M2 Oct 28, 2019

    tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 1 / 52
  2. 1 ͸͡Ίʹ 2 ໰୊ղઆ ࣮͸୯७ͳ૊Έ߹ΘͤʹͳΔ໰୊ ૠೖ DP F 2 ্ͷઢܗ୅਺

    Hall ͷ݁ࠗఆཧ ϑοΫ௕ͷެࣜ 3 ྨ୊ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 2 / 52
  3. ͸͡Ίʹ ▶ લͷ׆ಈͰѻͬͨʮࣸ૾ 12 ૬ʯ͸ɺ਺্͑͛໰୊ʹ͓͍ͯॏཁͳ֓೦ ▶ 1 ໰໨Ͱܰ͘෮श͠·͢ ▶ ͦΕҎ֎ʹ΋ςΫχοΫ͸͍Ζ͍Ζ

    ▶ DPɺแআݪཧɺ฼ؔ਺ͳͲɾɾɾ ▶ ࠓճ͸਺্͑͛ʹؔ͢ΔςΫχοΫͷҰ෦Λѻ͍·͢ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 3 / 52
  4. 123 Pairs 123 Pairs (CODE FESTIVAL 2016 Grand Final J)

    Link 1 Ҏ্ 2N ҎԼͷ੔਺͕ 1 ͭͣͭ͋Δɻ͜ΕΒΛɺҎԼͷ৚݅Λશͯຬͨ ͢Α͏ʹ N ݸͷϖΞʹ෼͚Δํ๏͸Կ௨Γ͋Δ͔ʁ ▶ 1 Ҏ্ 2N ҎԼͷ੔਺͸ͦΕͧΕͪΐ͏Ͳ 1 ͭͷϖΞʹؚ·ΕΔ ▶ ͕ࠩ 1 Ͱ͋ΔΑ͏ͳϖΞ͕ͪΐ͏Ͳ A ݸ͋Δ ▶ ͕ࠩ 2 Ͱ͋ΔΑ͏ͳϖΞ͕ͪΐ͏Ͳ B ݸ͋Δ ▶ ͕ࠩ 3 Ͱ͋ΔΑ͏ͳϖΞ͕ͪΐ͏Ͳ C ݸ͋Δ ੍໿ ▶ 1 ≤ N ≤ 5, 000 ▶ 0 ≤ A, B, C ▶ A + B + C = N tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 4 / 52
  5. 123 Pairs DP ͩͱͲ͏΍ͬͯ΋ؒʹ߹Θͳͦ͞͏ͳͷͰɺํ਑Λม͑ͯΈΑ͏ ͱΓ͋͑ͣɺ͋Γ͑ΔϖΞ෼͚ͷํ๏Λࢼͯ͠ΈΔ ▶ ྡΓ߹͏ 2 ݸΛɺ ʮ͕ࠩ

    1 Ͱ͋ΔϖΞʯʹ͢Δ ▶ ྫ: (7, 8) ▶ ྡΓ߹͏ 6 ݸΛɺ3 ͭͷʮ͕ࠩ 3 Ͱ͋ΔϖΞʯʹ͢Δ ▶ ྫ: (1, 4), (2, 5), (3, 6) ▶ ྡΓ߹͏ 4 + 2x ݸΛɺ ʮࠩ 2 ͷϖΞʯ ɺ ʮࠩ 3 ͷϖΞʯ ɺ ʮࠩ 3 ͷϖΞʯ ɺ · · · ɺ ʮࠩ 3 ͷϖΞʯ ɺ ʮࠩ 2 ͷϖΞʯʹ͢Δ ▶ ྫ: (1, 3), (2, 5), (4, 7), (6, 9), (8, 11), (10, 12) ▶ ྡΓ߹͏ 4 ݸΛɺ ʮࠩ 3 ͷϖΞʯ ɺ ʮࠩ 1 ͷϖΞʯʹ͢Δ ▶ ྫ: (3, 6), (4, 5) ॻ͍ͯΈΔͱΘ͔Γ·͕͢ɺύλʔϯ͸͜Ε͔͋͠Γ·ͤΜ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 5 / 52
  6. 123 Pairs ҎԼɺ ʮࠩ x ͷϖΞʯΛ x ͱද͢͜ͱʹ͠ɺ஋ͷখ͍͞਺ࣈ͔Βॱʹɺϖ Ξͷ͕ࠩͲͷΑ͏ʹͳΔ͔ྻͰදݱ ▶

    ͨͱ͑͹ 1 2 3 3 2 ͸ɺ(1, 2), (3, 5), (4, 7), (6, 9), (8, 10) Λ ද͢ ͜ͷ໰୊͸ҎԼͷΑ͏ʹݴ͍׵͑ΒΕΔ ໰୊ͷݴ͍׵͑ ҎԼͷ৚݅Λશͯຬͨ͢Α͏ͳ N ݸͷ࢛֯ͷྻ͸Կ௨Γ͋Δ͔ʁ ▶ 1 ͕ͪΐ͏Ͳ A ݸ͋Δ ▶ 2 ͕ͪΐ͏Ͳ B ݸ͋Δ ▶ 3 ͕ͪΐ͏Ͳ C ݸ͋Δ ▶ ྻ͸ 1 or 3 3 3 or 2 3 3 · · · 2 or 3 1 ͷ࿈݁ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 6 / 52
  7. 123 Pairs ߟ͑΍͘͢͠Α͏ (ҎԼͷΑ͏ʹ͓͘) ▶ 1 ͕ p ηοτ ▶

    3 3 3 ͕ q ηοτ ▶ 2 3 3 · · · 3 2 ͕ r ηοτ ▶ 3 1 ͕ s ηοτ ੔ཧ͢Δͱ ▶ A = p + s ▶ B = 2r ▶ C = 3q + s + x (x ͸ 2 ͱ 2 ͷؒʹ͋Δݸ਺) ͔͜͜ΒͲ͏͢Δʁ ˠ ͍͔ͭ͘ͷม਺Λݻఆ͠Α͏ʂ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 7 / 52
  8. 123 Pairs q ͱ s Λݻఆͯ͠ΈΔ ▶ A = p

    + s ▶ B = 2r ▶ C = 3q + s + x (x ͸ 2 ͱ 2 ͷؒʹ͋Δݸ਺) ݻఆ͢Δͱଞͷม਺΋͢΂ܾͯ·Δʂ ͋ͱ͸௨Γ਺ΛٻΊΕ͹Α͍ Ͳ͏΍ͬͨΒٻΊΒΕΔ͔ߟ͑ͯΈΑ͏ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 8 / 52
  9. 123 Pairs ·ͣɺ 3 3 3 Λ q ηοτ഑ஔ q

    ηοτ 3 3 3 3 ݸ 3 3 3 3 ݸ · · · 3 3 3 3 ݸ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 9 / 52
  10. 123 Pairs ࣍ʹɺ 1 Λ p ηοτ഑ஔ q ηοτ |

    3 3 3 3 ݸ | 3 3 3 3 ݸ | · · · | 3 3 3 3 ݸ | ೖΕΒΕΔͷ͸੺ઢ෦ (ॏෳ૊Έ߹Θͤɺq+1Hp ௨Γ) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 10 / 52
  11. 123 Pairs ࣍ʹɺ 3 1 Λ s ηοτ഑ஔ | 1

    1 ݸ | 3 3 3 3 ݸ | 1 1 ݸ | 1 1 ݸ | 3 3 3 3 ݸ | · · · | 3 3 3 3 ݸ | ೖΕΒΕΔͷ͸੺ઢ෦ (ॏෳ૊Έ߹Θͤɺp+q+1Hs ௨Γ) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 11 / 52
  12. 123 Pairs ▶ ࣍ʹɺ 2 3 3 · · ·

    3 2 Λ r ηοτ഑ஔ ▶ p+q+s+1 Hr ௨Γ) ▶ ͦͯ͠ɺ࢒͍ͬͯΔ 3 Λ 2 ͱ 2 ͷؒʹ͍ΕΔ ▶ ࢵઢ෦ʹೖΕΔɺr Hx ௨Γ 2 | 2 2 ݸ 1 1 ݸ 3 3 3 3 ݸ 1 1 ݸ 1 1 ݸ 2 | 2 2 ݸ 3 3 3 3 ݸ · · · 3 3 3 3 ݸ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 12 / 52
  13. 123 Pairs ૊Έ߹Θͤͷܭࢉ͸ɺࣄલʹ֊৐ɾ֊৐ͷٯݩΛ O(N) Ͱܭࢉ͢Δ͜ͱͰ ͦΕͧΕ O(1) ͰՄೳ ΑͬͯɺҎԼͷ௨Γʹղ͚Δ ·ͱΊ

    ▶ खॱ ▶ q ͱ r Λ͋Δ஋ʹݻఆ͢Δ: O(N2) ▶ ૊Έ߹ΘͤΛܭࢉ: O(1) ▶ ͜ΕΛ͢΂ͯͷ q, r ʹରͯ͠ߦ͏ ▶ ܭࢉྔ͸ O(N2) ͱͳΔͷͰɺؒʹ߹͏ʂ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 13 / 52
  14. Sequence Growing Hard Sequence Growing Hard (AGC024 E) Link ࣍ͷ৚݅Λຬͨ͢਺ྻͷ૊

    (A0, A1, . . . , AN ) ͱͯ͋͠ΓಘΔ΋ͷͷݸ਺Λ M Ͱׂͬͨ͋·ΓΛٻΊΑɻ ▶ શͯͷ i ʹର͠ɺAi ͸ 1 Ҏ্ K ҎԼͷ੔਺͔ΒͳΔ௕͞ i ͷ਺ྻ ▶ શͯͷ i ʹର͠ɺAi−1 ͸ Ai ͷ෦෼ྻ ▶ શͯͷ i ʹର͠ɺAi ͸ࣙॻॱͰ Ai−1 ΑΓେ͖͍ ੍໿ ▶ 1 ≤ N, K ≤ 300 ▶ 2 ≤ M ≤ 109 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 15 / 52
  15. Sequence Growing Hard ▶ ۭจࣈྻʹରͯ͠ɺ1 จࣈͣͭૠೖ͍ͯ͘͜͠ͱΛߟ͑Δ ▶ จࣈྻ s ʹจࣈ

    x ΛૠೖͰ͖Δ৚݅͸ʁ ▶ ศ্ٓɺͲͷจࣈΑΓ΋খ͍͞΋ͷ ϵ ͕จࣈྻͷ຤ඌʹؚ·Ε͍ͯΔ΋ ͷͱ͢Δ (ͭ·Γɺ͸͡Ίͷจࣈྻ͸ ϵ) s = hokkaido ϵ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 16 / 52
  16. Sequence Growing Hard จࣈ x Λ௥ՃͰ͖Δ৚݅͸ҎԼͷ 2 ௨Γ͋Δ ▶ ௥Ճ͢ΔҐஔͷ௚ޙͷจࣈ͕ɺx

    ΑΓখ͍͞ s = hokkai k do ϵ ▶ ௥Ճ͢ΔҐஔͷ௚ޙͷจࣈ͕ x ͱ౳͘͠ɺͦͷޙʹొ৔͢Δ x Ͱͳ͍ จࣈͷ͏ͪ࠷΋͍ۙ΋ͷ͕ x ΑΓখ͍͞ s = hok k kaido ϵ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 17 / 52
  17. Sequence Growing Hard ͱ͜ΖͰɺҎԼͷ 2 ͭ͸ੜ੒͞ΕΔྻ͕ಉ͡ s = hok k

    kaido ϵ s = hokk k aido ϵ ͜ΕΛߟ͑Δͱ࣮͸ 1 ͭΊͷϧʔϧ͚ͩߟ͑Ε͹ OK Ͱɺ௚ޙͷจࣈ͕ਅ ʹখ͍͞ͱ͖ͷΈ௥ՃΛڐͤ͹ඃΓ΋ൈ͚΋ͳ͘ঢ়ଶΛߟྀͰ͖Δ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 18 / 52
  18. Sequence Growing Hard ͜͜·Ͱͷٞ࿦͔Βɺ໰୊Λݴ͍׵͑Δ ໰୊ͷݴ͍׵͑ ҎԼͷ৚݅Λશͯຬͨ͢Α͏ͳ N + 1 ௖఺͔ΒͳΔࠜ෇͖໦͸Կ௨Γʁ

    ▶ ௖఺͸ 1 ͔Β N + 1 ͷ൪߸෇͖ ▶ ͦΕͧΕͷ௖఺ʹ͸จࣈ͕ॻ͔Ε͓ͯΓɺ਌ͷ൪߸͓Αͼจࣈ͸ৗʹ ࣗ਎ΑΓখ͍͞ ▶ ௖఺ u ͷ਌͕௖఺ v Ͱ͋Δ ↔ u ൪໨ʹ௥Ճͨ͠จࣈ͸ɺ௖఺ v ʹॻ ͔Εͨจࣈͷ௚લʹૠೖͨ͠ ▶ ࠜʹॻ͔Εͨจࣈ͸ ϵ ▶ খ͍͞΋ͷʹૠೖ͕ىͬͯ͜େ͖ͳ΋ͷʹͳΔͷͰɺ໦ߏ଄ʹΑΔද ݱ͕ޮՌత ͲͷΑ͏ʹղ͚Δ͔ʁ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 19 / 52
  19. Sequence Growing Hard ໦ DP Λ͠Α͏ ▶ dp[n][x] := ࠜʹจࣈ

    x Λॻ͘ͱ͖ɺn ௖఺ͷ໦Λ࡞Δ௨Γ਺ ▶ ࠜͷ௖఺൪߸ +1 ͷ௖఺ؚ͕·ΕΔ෦෼໦ͷαΠζΛ k ͱܾΊଧͪ͠ ͯ਺͑Δ ▶ dp[n][x] = n−1 k=1 d>x dp[k][d] × dp[n − k][x] × n−2 Ck−1 ▶ n−2 Ck−1 ͸ɺԼਤͷ v, v + 1 Ҏ֎ͷ௖఺ͷϥϕϦϯάͷ௨Γ਺ ▶ ͜ͷ··ͩͱ 4 ৐͕ͩɺྦྷੵ࿨ΛऔΔͱ O(N2K) ʹͳΔ k 頂点 v+1 v 全体: n 頂点 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 20 / 52
  20. F 2 ্ͷઢܗ୅਺ ࣍ʹઆ໌͢Δ໰୊ͷͨΊʹ࠷௿ݶઆ໌͠·͢ ༗ݶମ (nite eld) ༗ݶݸͷݩ͔ΒͳΔମ (࢛ଇԋࢉ͕ఆٛ͞Εͯด͍ͯ͡Δ༗ݶू߹) ▶

    F 2 = {0, 1} ͸ 0, 1 ͷΈͰߏ੒͞Εͨମͷ͜ͱͰɺڝٕϓϩάϥϛϯ άͰ͸Α͘ग़ͯ͘Δ ▶ mod2 ͰՃ๏ͱ৐๏͕ఆΊΒΕ͍ͯΔɺͱ΋ಡΈସ͑ΒΕΔ ▶ Ճ๏͸ xorɺ৐๏͸ andɺͱ΋ಡΈସ͑ΒΕΔ + 0 1 × 0 1 0 0 1 0 0 0 1 1 0 1 0 1 Table: F 2 ্ͰͷՃ๏ͱ৐๏ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 22 / 52
  21. Odd Subrectangles Odd Subrectangles ▶ ཁૉ͕ 0, 1 ͷΈ͔ΒͳΔ N

    × M ͷߦྻ A = {ai,j } ͕༩͑ΒΕΔ ▶ ߦͷ෦෼ू߹ X ͱྻͷ෦෼ू߹ Y ͷ૊ 2N+M ௨Γͷ͏ͪɺҎԼͷ৚ ݅Λຬͨ͢΋ͷͷݸ਺Λ 998244353 Ͱׂͬͨ༨ΓΛٻΊΑ ▶ X ʹଐ͢Δߦͱ Y ʹଐ͢ΔྻͷަΘΓʹଐ͢Δ |X||Y | ݸͷϚεʹॻ ͔Εͨ੔਺ͷ૯࿨͕ح਺Ͱ͋Δ ੍໿ ▶ 1 ≤ N, M ≤ 300 ▶ 0 ≤ ai,j ≤ 1 ώϯτ: ʮ૯࿨͕ح਺ʯΛগ͠ݴ͍׵͑Α͏ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 23 / 52
  22. Odd Subrectangles ͍͔ͭ͘ݴ͍׵͑Λ͠Α͏ ▶ ʮ૯࿨͕ح਺ʯ↔ʮ֘౰ཁૉͲ͏͠ͷ xor ͕ 1ʯ ▶ ઌఔड़΂ͨΑ͏ʹɺ࿨͸࣮࣭

    xor ▶ ߦΛฒ΂ସ͑ͯ΋Α͍ ▶ ू߹ͳͷͰߦͷॱং͸ؔ܎ͳ͍ ▶ x ߦ໨Λ y ߦ໨ʹՃࢉͯ͠΋Α͍ ▶ xor ͷॏཁͳੑ࣭ʮٯݩ͕ࣗ෼ࣗ਎ʯ: ࣗ਎ͱ xor ΛऔΔͱ 0 ʹͳΔ ▶ x ߦ໨Λ y ߦ໨ʹՃࢉͨ͠ঢ়ଶɺͭ·Γ c ΛྻΠϯσοΫεͱͯ͠ a′ y,c = ax,c ⊕ ay,c ͱͨ͠৔߹Λߟ͑Δ ▶ x ߦ໨͚ͩબ୒͢Δঢ়ଶ͸ ax,c ૢ࡞ޙͷ x ߦ໨Λબ୒ ▶ y ߦ໨͚ͩબ୒͢Δঢ়ଶ͸ ax,c ⊕ a′ y,c ૢ࡞ޙͷ x, y ߦ໨Λબ୒ ▶ x, y ߦ໨྆ํબ୒͢Δঢ়ଶ͸ a′ y,c ૢ࡞ޙͷ y ߦ໨Λબ୒ ▶ ͦΕͧΕҎ্ͷΑ͏ʹରԠ͕औΕΔͷͰߦՃࢉͯ͠΋໰୊ͳ͍ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 24 / 52
  23. Odd Subrectangles ▶ ߦΛฒͼସ͑ͯ΋Α͍ ▶ ߦՃࢉͯ͠΋Α͍ ▶ ݴ͍׵͑Ε͹ɺʮߦྻΛߦجຊมܗͯ͠΋Α͍ʯʂ ▶ ௨ৗɺجຊมܗʹ͸ʮߦΛఆ਺ഒʯ΍ʮଞͷߦʹ͋ΔߦΛఆ਺ഒͨ͠΋

    ͷΛՃࢉʯͱ͍͏ૢ࡞΋͋Γ·͕͢ɺF 2 ͷ৔߹͸͜Ε͚ͩͰ͢ ▶ ͳͷͰɺ༩͑ΒΕͨߦྻΛߦجຊมܗͯ͠ΈΑ͏ ▶ ಉ༷ͷཧ༝Ͱྻجຊมܗ΋Ͱ͖ΔͷͰɺͦΕ΋͠Α͏     0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0     ߦجຊมܗ − − − − − − →     1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0     ྻجຊมܗ − − − − − − →     1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0     ૢ࡞ޙ͸ʮࠨ্ʹ୯Ґߦྻ͕͋Γɺଞ͸શͯ 0ʯͱ͍͏ܗʹͳΔ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 25 / 52
  24. Odd Subrectangles ▶ มܗ͢Δͱɺ͢΂ͯͷཁૉ͕ 0 Ͱ͋Δߦɾྻ͕ൃੜ͢Δͱ͖͕͋Δ ▶ ͜ͷΑ͏ͳߦ͓Αͼྻ͸ɺબΜͰ΋બ͹ͳͯ͘΋ xor ͕มΘΒͳ͍ʂ

    ▶ ୯ҐߦྻͷαΠζΛ r ͱ͢Δͱ͖ɺ2N−r × 2M−r ௨Γ͸ࣗ༝     1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0     ▶ ࣍ʹɺ୯ҐߦྻͷՕॴʹؔͯ͠ߟ͑Δ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 26 / 52
  25. Odd Subrectangles ▶ બͿߦΛద౰ʹݻఆ͢Δ ▶ x ߦબͿ (੺৭) ▶ બΜͩߦͷΠϯσοΫεू߹Λ

    R ͱ͢Δ x ߦબͿ                  1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1       ▶ ྻͷΠϯσοΫε c ʹ͍ͭͯɺҎԼͷΑ͏ʹબͿͱ૯࿨͕ح਺ʹͳΔ 1. c ∈ R ͔Βح਺ݸબͿ 2. c / ∈ R ͔Β೚ҙݸબͿ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 27 / 52
  26. Odd Subrectangles ▶ બͿߦΛద౰ʹݻఆ͢Δ ▶ x ߦબͿ (੺৭) ▶ બΜͩߦͷΠϯσοΫεू߹Λ

    R ͱ͢Δ x ߦબͿ                  1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1       →       1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1       ▶ ྻͷΠϯσοΫε c ʹ͍ͭͯɺҎԼͷΑ͏ʹબͿͱ૯࿨͕ح਺ʹͳΔ 1. c ∈ R ͔Βح਺ݸબͿ (྘৭) 2. c / ∈ R ͔Β೚ҙݸબͿ (ԫ৭) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 28 / 52
  27. Odd Subrectangles ܭࢉͯ͠ΈΑ͏ (શମͷߦྻαΠζ͕ N × Mɺ୯ҐߦྻͷαΠζ͕ r) ▶ x

    ߦબͿ௨Γ਺: rCx ▶ x ྻ͔Βح਺ݸબͿ௨Γ਺: 2x−1 ▶ ʮۮ਺ݸબͿʯ௨Γ਺ͱʮح਺ݸબͿ௨Γ਺ʯ͕౳͍͜͠ͱΛར༻ ▶ r − x ྻ͔Β೚ҙݸબͿ௨Γ਺: 2r−x ▶ ࣗ༝ʹબ୒Ͱ͖Δߦͱྻͷ௨Γ਺: 2N−r × 2M−r ౴͑ = r x=1 rCx2r−12N+M−2r = (2r − 1)2N+M−r−1 = 2N+M−1 − 2N+M−r−1 ▶ ୯ҐߦྻͷαΠζ r ͱ͸ɺݩͷߦྻͷ rank ʹ౳͍͠ ▶ Ψ΢εͷফڈ๏ͳͲΛ༻͍ͯٻΊΒΕΔ (ࢀߟ: Link ) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 29 / 52
  28. ब৬׆ಈ ब৬׆ಈ Link ▶ N ਓͷब৬ر๬ऀʹࣾ͢ɺ͵ࣾɺ͚ࣾͦΕͧΕʹରͯ͠ब৬͍͔ͨ͠ ΞϯέʔτΛऔͬͨ ▶ ʮ୭͕Ͳ͜ʹब৬͍͔ͨ͠Ͳ͏͔ʯͱ͍͏ύλʔϯ͸ 23N

    ௨Γ͋Δ ▶ ࣾ͢ɺ͵ࣾɺ͚ࣾʹ͸ͦΕͧΕ࠷େͰ X ਓɺY ਓɺZ ਓ·Ͱͷਓ͕ೖ ࣾͰ͖Δ ▶ 23N ௨Γͷ͏ͪɺશͯͷਓ͕ر๬͢Δब৬ઌ΁ब৬Ͱ͖Δͷ͸Կ௨Γ ͔ΛٻΊɺ109 + 7 Ͱׂͬͨ༨ΓΛٻΊΑ ▶ Ͳͷձࣾ΋ر๬͠ͳ͍ਓ͸ɺر๬͢Δब৬ઌ΁ब৬Ͱ͖ͳ͍΋ͷͱ͢Δ ੍໿ ▶ 1 ≤ X, Y, Z ≤ N ≤ 150 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 31 / 52
  29. Hall ͷ݁ࠗఆཧ ͜ͷ໰୊Λղͨ͘Ίͷલఏ஌ࣝ Hall ͷ݁ࠗఆཧ Link ೋ෦άϥϑ G = (U

    + V, E) ʹରͯ͠ɺҎԼ͸ಉ஋Ͱ͋Δ 1. U ͷ௖఺ΛશͯΧόʔͰ͖ΔϚονϯά͕ଘࡏ ▶ U ͷ௖఺ΛશͯΧόʔ͢Δͱ͸ɺU ಺ͷ೚ҙͷ௖఺ u ͕Ϛονϯάͷ ୺఺ͱͯ͠࠾༻͞Ε͍ͯΔ͜ͱ 2. ೚ҙͷ U ͷ෦෼ू߹ A ʹରͯ͠ |A| ≤ |Γ(A)| ▶ ͨͩ͠ɺΓ(A) ͸ A ͱลͰͭͳ͕͍ͬͯΔ௖఺ͷू߹ ඞཁे෼Ͱ͋Δɺͱ͍͏ͷ͕ϙΠϯτʂ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 32 / 52
  30. Hall ͷ݁ࠗఆཧ 2. ͷؾ࣋ͪ ੨͍௖఺਺ (2) ≤ ੨ลͱͭͳ͕͍ͬͯΔ੺͍௖఺਺ (3) ͜ͷΑ͏ͳେখؔ܎͕ɺશͯͷ

    U ͷ෦෼ू߹ʹରͯ͠੒ཱ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 34 / 52
  31. Hall ͷ݁ࠗఆཧ ͞ΒʹɺҎԼ΋੒Γཱͭ͜ͱ͕෼͔Δ Hall ͷ݁ࠗఆཧ (ॏΈ෇͖ʁ ) ▶ ೋ෦άϥϑ G

    = (U + V, E) ͕͋ΓɺU, V ͷ֤௖఺ x ʹ͸ʮͦͷ௖఺ Λ୺఺ͱ͢ΔลΛ͍ͭ͘·Ͱ࠾༻Ͱ͖Δ͔ʯΛදͨ͠ྔ w(x) ͕ఆ ·͍ͬͯΔ΋ͷͱ͢Δ ▶ ଟॏลͰ΋͍͍ (ྲྀྔͬΆ͘ߟ͍͑ͯͩ͘͞) ▶ ҎԼ͸ಉ஋Ͱ͋Δ 1. u∈U w(u) ล͢΂ͯΛ࠾༻͢Δ͜ͱ͕Ͱ͖Δ 2. શͯͷ A ⊆ U ʹ͍ͭͯɺ u∈A w(u) ≤ v∈Γ(A) w(v) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 35 / 52
  32. Hall ͷ݁ࠗఆཧ ҎԼͷΑ͏ʹ U, V Λόϥͤ͹ɺઌఔͷ݁ࠗఆཧΑΓ΋গ͖͍ͭ͠৚͕݅੒ Γཱ͍ͬͯΔ͜ͱ͕෼͔Δ ▶ όϥͨ͠ޙͷ U

    ଆͷ௖఺ʹ͓͍ͯݩʑಉ͡௖఺ͩͬͨ΋ͷ͸ɺ࠷௿Ͱ ΋ 1 ݸબΜͰ͠·͑͹ԿݸબΜͰ΋ Γ(A) ͕มΘΒͳ͍ ▶ શ෦બΜͩͱ͖͕࠷΋৚͕͖݅ͭ͘ɺ͜ͷ৔߹Ͱ΋݁ࠗఆཧͷ৚͕݅ ੒Γཱͭͱ͍͏ͷ͕ઌఔͷओு w = 3 w = 1 w = 1 w = 2 (ࣗ෼ͷཧղ͕ؒҧ͍ͬͯͨΒڭ͍͑ͯͩ͘͞) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 36 / 52
  33. ब৬׆ಈ ▶ ͱΓ͋͑ͣ਺্͑͛Ͱ͸ͳ͘ Yes / No Λߟ͑Δ ▶ ਓΛͦΕͧΕͷر๬ʹԠͯ͡ҎԼͷ 7

    ௨Γʹ෼ྨ ▶ ֤ม਺͸ɺͦͷΑ͏ͳر๬Λग़ͨ͠ਓ਺Λද͢΋ͷͱ͢Δ ▶ શһ͕ɺر๬͢Δब৬ઌ΁ब৬Ͱ͖Δ͔ʁ ▶ ͨͩ͠ɺx + y + z + xy + yz + xz + xyz = N ࣾ͢ ͵ࣾ ͚ࣾ ม਺໊ ⃝ ⃝ ⃝ xyz ⃝ ⃝ × xy ⃝ × ⃝ xz ⃝ × × x × ⃝ ⃝ yz × ⃝ × y × × ⃝ z Table: ब৬ر๬ͱม਺ͷରԠද tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 37 / 52
  34. ब৬׆ಈ ֤ม਺Λݻఆͯ͠ Yes / No Λ൑ఆ͢ΔͳΒɺҎԼͷΑ͏ͳάϥϑʹྲྀྔ N ྲྀΕΔ͔Ͳ͏͔Λௐ΂Ε͹ྑ͍ xyz xy

    xz x yz y z X Y Z ͔͠͠ɺશ෦ͷม਺Λݻఆ͍ͯͯ͠͸ؒʹ߹Θͳ͍ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 38 / 52
  35. ब৬׆ಈ ▶ ઌఔͷάϥϑʹ Hall ͷఆཧΛ༻͍Δ ▶ ৚͕݅ݫ͍͠ͱ͜ΖͷΈൈ͖ग़͢ͱҎԼͷΑ͏ͳࣜʹͳΔ 1. x ≤

    X 2. y ≤ Y 3. z ≤ Z 4. x + y + xy ≤ X + Y 5. y + z + yz ≤ Y + Z 6. x + z + xz ≤ X + Z 7. x + y + z + xy + yz + xz + xyz = N tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 39 / 52
  36. ब৬׆ಈ ▶ x, y, z, xy Λݻఆͯ͠ɺఆ਺ͱΈͳ͢ 1. yz ≤

    Y + Z − y − z = c1 2. xz ≤ X + Z − x − z = c2 3. yz + xz + xyz = N − x − y − z − xy = c3 ▶ ࢒Γͷม਺͕औΓಘΔ஋ͷൣғ͸ c1, c2, c3 ͱ͍͏ఆ਺Ͱද͞ΕΔ͜ͱ ͕෼͔Δʂ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 40 / 52
  37. ब৬׆ಈ ▶ c1, c2, c3 Λݻఆͨ͠ͱ͖ɺ৚݅Λຬͨ͢ yz, xz, xyz ͕Կ௨Γଘࡏ͢

    Δ͔Λܭࢉ͠Α͏ ▶ ͨͿΜ৭ʑٻΊํ͸͋Γ·͢ ▶ yz, xz ͷ৚͕݅ෆ౳ࣜͰ͸ͳ͘౳ࣜͰ͋Δͱͯ͠ɺྦྷੵ࿨ΛऔΔ ▶ แআݪཧ (c1 Λ௒͑Δɺc2 Λ௒͑ΔɺͲͪΒ΋௒͑Δ) ▶ ֤ (c1, c2, c3) ʹ্͍ͭͯهͷ௨Γ਺ΛલॲཧͰٻΊ͓͚ͯ͹ɺ x, y, z, xy Λݻఆͨ͠ͱ͖ʹ O(1) Ͱ஋Λ࣋ͬͯ͜ΕΔ ▶ Αͬͯɺ͜ͷ໰୊͸ O(N4) Ͱղ͚Δʂ ▶ ఆ਺ͰׂΒΕΔͷͰΘΓͱ଎͍Ͱ͢ tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 41 / 52
  38. ϑοΫ௕ͷެࣜ Ϡϯάਤܗ (Young diagram) Link ▶ ࣗવ਺ n ͷ෼ׂ λ

    = (λ1, λ2, . . . , λr) ▶ λk ∈ N, λ1 ≥ λ2 ≥ . . . ≥ λr , k λk = n ▶ ෼ׂ λ ͔ΒɺҎԼͷϧʔϧͰਤΛ࡞ΕΔ ▶ k ߦ໨ʹ λk ݸͷਖ਼ํܗΛࠨ٧Ίʹฒ΂Δ ▶ ͦΕͧΕͷਖ਼ํܗΛ cell ͱݺͼɺi ߦ j ྻ໨ͷ cell Λ (i, j) ͱॻ͘͜ͱ ʹ͢Δ ྫ (෼ׂ λ = (5, 3, 2) ʹର͢ΔϠϯάਤܗ) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 44 / 52
  39. ϑοΫ௕ͷެࣜ Ϡϯάਤܗ (Young diagram) Link ▶ ෼ׂ λ ʹର͢ΔϠϯάਤܗͷసஔ ▶

    ࣌ܭճΓʹ 90 ౓ճͯ͠ɺࠨӈ൓స ▶ సஔ͢Δͱɺλ′ ʹର͢ΔϠϯάਤܗ͕ಘΒΕΔ ▶ ϠϯάਤܗΛ஌͍ͬͯΔͱɺ৭ʑ௚ײతʹΘ͔Δ ▶ ྫ: ࣗવ਺ n Λ k ݸͷࣗવ਺ʹ෼ׂ͢Δ௨Γ਺ͱɺ࢖༻͢Δ੔਺ͷ࠷େ ஋͕ k Ͱ͋Δ n ͷ෼ׂͷ௨Γ਺͸౳͍͠ ▶ ϠϯάਤܗͷసஔΛ࢖ͬͯҰରҰରԠ͕औΕ͓ͯޓ͍ʹ໭ͤΔ ྫ (෼ׂ λ = (5, 3, 2) ͷϠϯάਤܗͷసஔ) → tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 45 / 52
  40. ϑοΫ௕ͷެࣜ ඪ४Ϡϯά൫ (standard Young tableau) ▶ λ Λࣗવ਺ n ͷ෼ׂɺYλ

    ΛͦΕʹରԠ͢ΔϠϯάਤܗͱ͢Δ ▶ ҎԼͷ৚݅ʹै͍ɺYλ ͷ֤ cell ʹ 1 ͔Β n ·Ͱͷ੔਺Λ 1 ͭͣͭॻ ͖ࠐΜͩਤܗ T Λඪ४Ϡϯά൫ͱ͍͏ 1. ֤ߦ͸ࠨ͔Βӈʹ୯ௐ૿Ճ 2. ֤ྻ͸্͔ΒԼʹ୯ௐ૿Ճ ▶ ඪ४Ϡϯά൫ͷϕʔεͱͳͬͨ λ Λɺඪ४Ϡϯά൫ͷʮܗʯͱ͍͏ ▶ ܗ͕ λ ͷඪ४Ϡϯά൫ͷ૯਺Λ SYTλ ͱ͓͘ ܗ͕ λ = (5, 3, 2) Ͱ͋Δඪ४Ϡϯά൫ͷྫ → 1 3 4 5 9 2 6 8 7 10 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 46 / 52
  41. ϑοΫ௕ͷެࣜ ϑοΫ௕ (hook length) Ϡϯάਤܗ Yλ ͷ cell x =

    (i, j) ʹର͢ΔϑοΫ௕ h(x) ͸ɺ (Լʹ͋Δ cell ਺) + (ӈʹ͋Δ cell ਺) + 1 ⋆ ⋆ ⋆ ⋆ ⋆ ⋆ ϑοΫ௕ͷެࣜ (hook length formula) λ ͕ n ͷ෼ׂͰ͋Δͱ͖ɺܗ͕ λ Ͱ͋Δඪ४Ϡϯά൫ͷ૯਺͸ɺҎԼͷࣜ Ͱද͞ΕΔ SYTλ = n! x∈Yλ hλ(x) tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 47 / 52
  42. ϑοΫ௕ͷެࣜ ϑοΫ௕ͷެࣜ (hook length formula) λ ͕ n ͷ෼ׂͰ͋Δͱ͖ɺܗ͕ λ

    Ͱ͋Δඪ४Ϡϯά൫ͷ૯਺͸ɺҎԼͷࣜ Ͱද͞ΕΔ SYTλ = n! x∈Yλ hλ(x) ྫ (ܗ͕ λ = (2, 1) Ͱ͋Δඪ४Ϡϯά൫) SYTλ = 3! 1 × 1 × 3 = 2 ࣮ࡍʹɺҎԼͷ 2 छྨ͕͋Δ 1 2 3 , 1 3 2 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 48 / 52
  43. Gnomon numbering Gnomon numbering Link ▶ n × n ͷάϦουͷӈ্

    m × m ྖҬΛআڈͯ͠Ͱ͖ΔϠϯάਤܗΛ L(n, m) ͱ͢Δ ▶ ҎԼͷϧʔϧʹ͕ͨͬͯ͠ 1 ͔Β n2 − m2 ·Ͱͷ੔਺Λ 1 ͭͣͭ cell ʹॻ͘௨Γ਺͸ʁ ▶ ֤ߦ͸ࠨ͔Βӈʹ୯ௐݮগ ▶ ֤ྻ͸্͔ΒԼʹ୯ௐ૿Ճ ྫ: L(5, 3) → 6 4 7 5 14 9 15 11 8 3 1 16 13 12 10 2 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 49 / 52
  44. Gnomon numbering ▶ సஔͬΆ͍͜ͱΛͯ͠੔਺ x Λ n2 − m2 +

    1 − x Ͱஔ͖׵͑Ε͹ɺඪ ४Ϡϯά൫ʹͳΔ ▶ ݁ہɺϑοΫ௕ͷެࣜΛద༻͢Ε͹Α͍ 6 4 7 5 14 9 15 11 8 3 1 16 13 12 10 2 → 16 15 14 7 6 13 11 9 5 4 12 8 10 3 2 1 → 1 2 3 10 11 4 6 8 12 13 5 9 7 14 15 16 tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 50 / 52
  45. ྨ୊ ࿅शʹͲ͏ͧ (ҎԼωλόϨ஫ҙ) ▶ ࣮͸୯७ͳ૊Έ߹ΘͤʹͳΔ໰୊ ▶ ଟॏϧʔϓ (ABC021) Link ▶

    11 (ABC066 / 600 ఺) Link ▶ ૠೖ DP ▶ จࣈྻ (TDPC) Link ▶ Flexible Permutation (CPSCO2019 Session 3) Link ▶ F 2 ্ͷઢܗ୅਺ ▶ ਺ྻ XOR (codeFlyer ຊઓ / 600 ఺) Link ▶ Xor Sum 3 (ABC141 / 600 ఺) Link ▶ Hall ͷ݁ࠗఆཧ ▶ Exhausted? (ARC076 / 1000 ఺) Link ▶ Construction of a tree (AGC029 / 2200 ఺) Link ▶ ϑοΫ௕ͷެࣜ ▶ Maximin Game (KUPC 2019) Link tsutaj (Hokkaido Univ.) ਺্͑͛ςΫχοΫ Hard Oct 28, 2019 52 / 52