ABC lessons learned7 - zettsu-t/zettsu-t.github.io GitHub Wiki

AtCoder Beginner Contest lessons learned (ABC 345-364)

ใ‚ณใƒณใƒ†ใ‚นใƒˆใซๅ‚ๅŠ ใ—ใŸๆ•™่จ“ใ‚’ใพใจใ‚ใฆใ„ใใพใ™ใ€‚

ใƒˆใƒƒใƒ—ใƒšใƒผใ‚ธใธ ABC ๅ‚ๅŠ ่จ˜1ใธ ABC ๅ‚ๅŠ ่จ˜3ใธ

ABC 345-354 (ใ‚ณใƒณใƒ†ใ‚นใƒˆ21..30ๅ›ž็›ฎ)

ABC 345-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ21ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚้…็‚นใ‹ใ‚‰ใ—ใฆA..Dๅ•้กŒใฏ่งฃใ‹ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ใ€E,Fๅ•้กŒใŒ่งฃใ‘ใŸใ‚‰ๅคง่บ้€ฒใจไบˆๆƒณใ—ใŸใฎใ ใŒใ€ใพใ•ใ‹Dๅ•้กŒใงๆœ€ๅคง็žฌ้–“3ๆก้ †ไฝใ ใจใฏๆ€ใ‚ใชใ‹ใฃใŸใ€‚Cๅ•้กŒใงๆ™‚้–“ใ‚’ๆบถใ‹ใ—ใŸใฎใŒๆ‚”ใ‚„ใพใ‚Œใ‚‹ใŒใ€ๆ‚”ใ—ใ„ใจใ„ใ†ใ‹ๅฎŸๅŠ›ใŒ่ถณใ‚Šใชใ„ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

< ใงๅง‹ใพใ‚Šใ€ = ใŒไธ€ใคไปฅไธŠ็ถšใใ€ > ใง็ต‚ใ‚ใ‚‹ใ€ใจใ„ใ†ใฎใ‚’่กจ็พใ™ใ‚‹ใฎใซๆ‚ฉใ‚“ใงใ—ใพใฃใŸใ€‚ๆญฃ่ฆ่กจ็พใฏใƒกใ‚ฟๆ–‡ๅญ—ใŒ่พ›ใใ†(a,b,cใซ็ฝฎๆ›ใ™ใ‚Œใฐใ„ใ„ใฎใ ใŒ)ใ‚’ๆ€ใ„ใจใฉใพใ‚Šใ€็Šถๆ…‹้ท็งปใซใ—ใŸใ€‚ใ‚ˆใ่€ƒใˆใŸใ‚‰ ่งฃ่ชฌ้€šใ‚Š ๆ–‡ๅญ—ๅˆ—ใ‚’่ตฐๆŸปใ™ใ‚Œใฐใ‚ˆใ‹ใฃใŸใฎใงใ€ๆ‚ฉใฟ้ŽใŽใงใ‚ใ‚‹ใ€‚ๆ–‡ๅญ—ใ‚’ใ‚จใ‚นใ‚ฑใƒผใƒ—ใ—ใชใใฆใ‚‚ๆญฃ่ฆ่กจ็พใง ้€šใ‚‹ ใ€‚

ใ“ใฎๆ‚ฉใฟ้ŽใŽใงๆ™‚้–“ใ‚’ๆบถใ‹ใ—ใ€ๅพŒใฎๆ‚ฉใพใชใ•ใ™ใŽใงWAใ™ใ‚‹ใ“ใจใซใชใ‚‹ใ€‚

ABC 345-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไฝ•ๅบฆใ‚‚่ฆ‹ใŸใ€่ฒ ใฎๆ•ฐใฎไธธใ‚ใงใ‚ใ‚‹ใ€‚ใ„ใคใพใง็ตŒใฃใฆใ‚‚ๆš—่จ˜ใงใใชใ„ใฎใงใ€ๆญฃ่ฒ ใซๅˆ†ใ‘ใฆไฝ™ใ‚Šใ‚’่ฃœๅฎŒใ—ใŸใ€‚

ABC 345-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Cๅ•้กŒใซใ—ใฆใฏใพใ•ใ‹ใฎ้›ฃๅ•ใง2 WAsใงใ‚ใ‚‹ใ€‚ใ“ใฎๆ™‚้–“ใจใƒšใƒŠใƒซใƒ†ใ‚ฃใŒ็—›ใ„ใ€‚

ๅ…ฅๅŠ›ไพ‹ใŒ้€šใฃใŸใฎใงๆๅ‡บใ—ใฆ1ใƒšใƒŠ้ฃŸใ‚‰ใ„ใ€ไฝ•ใ‚’ๆ€ใฃใŸใ‹ๅพฎไฟฎๆญฃใงใ‚‚ใ†1ใƒšใƒŠใ‚’้ฃŸใ‚‰ใฃใŸใ€‚ๆ˜Žใ‚‰ใ‹ใซ2ใƒšใƒŠ็›ฎใฏไฝ™่จˆใงๅ†ท้™ใ•ใ‚’ๆฌ ใ„ใฆใ„ใŸใŒใ€ใ“ใ“ใงๆญฃๆฐ—ใซๆˆปใฃใฆDๅ•้กŒใซ็งปใฃใŸใ€‚ๆๅ‡บใ‚’ๆ€ใ„ใจใฉใพใ‚‹ในใใ ใฃใŸใ€‚Dๅ•้กŒใ‚’่งฃใ„ใฆใ‹ใ‚‰Cๅ•้กŒใซๆˆปใฃใŸใ‚‰้–“้•ใ„ใŒๅˆ†ใ‹ใฃใŸใ€‚

่‹ฑๅฐๆ–‡ๅญ—ใฏ26็จฎใ—ใ‹ใชใ„ใฎใงใ€ std::vector ใ‚’26ๆœฌไฝœใฃใฆใ€ a..z ใŒไฝ•ๆ–‡ๅญ—็›ฎใซๅ‡บใ‚‹ใ‹่ชฟในใ‚‹ใ€‚ๅ…ˆ้ ญใ‹ใ‚‰ $i=1..N$ ๆ–‡ๅญ—็›ฎใซใคใ„ใฆใ€ $i$ ๆ–‡ๅญ—็›ฎใŒ $c$ ใชใ‚‰ใ€ $j=[i+1,N]$ ใซ $c$ ใŒไฝ•ๅ€‹ใ‚ใ‚‹ใ‹ๆ•ฐใˆใ‚‹ใ€‚ใ“ใ‚Œใฏ std::lower_bound() ใงๅˆ†ใ‹ใ‚‹ใ€‚

ๅ•ใ‚ใ‚Œใฆใ„ใ‚‹ใฎใฏ $S$ ใงใฏใชใ„ๆ–‡ๅญ—ๅˆ—ใŒไฝ•็จฎ้กžๅข—ใˆใพใ™ใ‹ใ€ใงใ‚ใ‚‹ใ€‚ใ“ใฎ่ฆ–็‚นใ‚’้–“้•ใˆใฆใชใ‹ใชใ‹ๆญฃ่งฃใŒๅ‡บใ›ใชใ‹ใฃใŸใ€‚้‡่ฆใชใฎใฏใ€ๆ–‡ๅญ—ๅˆ—ใฎๅ…ฅใ‚Œๆ›ฟใˆๆ“ไฝœใซใ‚ˆใฃใฆใ€ๅธธใซ $S$ ใจ็•ฐใชใ‚‹ๆ–‡ๅญ—ๅˆ—ใŒใงใใ‚‹ใฎใ‹ใ€ ๅ…ฅใ‚Œๆ›ฟใˆใฆใ‚‚ $S$ ใฎใพใพใจๅ ดๅˆใŒใ‚ใ‚‹ใฎใ‹ใ€ใงใ‚ใ‚‹ใ€‚ใ“ใ“ใ‚’ๆœ€ๅˆ่ฆ‹ๆŠœใ‘ใชใ‹ใฃใŸใฎใ ใŒใ€ๅ•้กŒๆ–‡ใซ ใกใ‚‡ใ†ใฉ1ๅ›ž (exactly once) ใจๅคชๅญ—ใงๆ›ธใ‹ใ‚Œใฆใ„ใ‚‹ๆ„ๅ›ณใŒ่ชญใฟๅ–ใ‚Œใชใ‹ใฃใŸใ€‚ใ‚ใ‚‹่จ˜ไบ‹ใ‚’่ชญใ‚“ใงๅˆ†ใ‹ใฃใŸใŒใ€ๅ‡บๅŠ›ไพ‹1ใซ abc ใŒ็„กใ„ใฎใŒ้‡่ฆใชใƒ’ใƒณใƒˆใ ใฃใŸใ€‚

ๅ†ท้™ใซใชใฃใฆๅ‡ฆ็†ใ‚’ๆ›ธใ“ใ†ใ€‚ๆทปใˆๅญ—ใฏ1-based indexingใคใพใ‚Šๅ…ˆ้ ญใ‚’1ๆ–‡ๅญ—็›ฎใจๆ•ฐใˆใ‚‹ใ€‚

  • $i$ ๆ–‡ๅญ—็›ฎใŒ $c$ ใจใ™ใ‚‹
  • $j = [i+1,N]$ ใซใฏ $W_i = N-i$ ๆ–‡ๅญ—ใ‚ใ‚Šใ€ใใฎไธญใซ $c$ ใŒไฝ•ๅ€‹ใ‚ใ‚‹ใ‹ๆ•ฐใˆใ‚‹( $M_i$ ๅ€‹ใจใ™ใ‚‹)ใ€‚ใ“ใ‚Œใฏ std::lower_bound() ใงๅˆ†ใ‹ใ‚‹ใ€‚ ็ดฏ็ฉๅ’Œ ใชใ‚‰่จˆ็ฎ—้‡ใŒๆธ›ใ‚‹ใŒใ€ๅฎŸ่ฃ…ใŒ้•ทใใ€C++ใชใ‚‰ๅฎŸ่กŒๆ™‚้–“ใŒ $log(|S|)$ ๅ€ใงใ‚‚TLEใ—ใชใ„ใ€‚
  • ็•ฐใชใ‚‹ๆ–‡ๅญ—ใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใ‚‹ๆ–นๆณ•ใฏ $W_i - M_i$ ้€šใ‚Šใ‚ใ‚‹ใฎใงใ€็ญ”ใˆใซๅŠ ็ฎ—ใ™ใ‚‹

ใ‚ใ‚‹ $i$ ใซใคใ„ใฆ $M_i &gt; 0$ ใชใ‚‰ใ€ๅŒใ˜ๆ–‡ๅญ—ใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใฆ $S$ ใ‚‚็ญ”ใˆใฎไธ€็จฎใชใฎใงใ€็ญ”ใˆใ‚’ไธ€้€šใ‚Šๅคšใใ™ใ‚‹ใ€‚ใ™ในใฆใฎ $i$ ใซใคใ„ใฆ $M_i = 0$ ใชใ‚‰ใ€ๅฟ…ใšๆ–‡ๅญ—ใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใ‚‹ใฎใง $S$ ใซใชใ‚‹ใ“ใจใฏใชใ„ใ€‚ใ“ใ‚ŒใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚ใ“ใ“ใงๆ™‚้–“ใ‚’ๆŽ›ใ‘ใชใ‘ใ‚Œใฐ้’ใƒ‘ใƒ•ใ‚ฉใ ใฃใŸใฎใงใ€ๅบ็›คใง่บ“ใ็™–ใ‚’็›ดใ™ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚

ไป–ใฎๆ–นใฎใ‚ณใƒผใƒ‰ใ‚’่ชญใ‚“ใงใ€ใ‚‚ใฃใจ็ฐกๅ˜ใช ่งฃๆณ• ใŒใ‚ใ‚‹ใจๅˆ†ใ‹ใฃใŸใ€‚ a..z ใŒใฉใ“ใซใ‚ใ‚‹ใ‹ใฏ็„ก่ฆ–ใ—ใฆใ€ใใ‚Œใžใ‚Œไฝ•ๅ€‹ใ‚ใ‚‹ใ‹ๆ•ฐใˆใ‚‹ใ€‚ $(i,j)$ ใฎ็ทๅฝ“ใŸใ‚ŠใŒ $|S| \choose 2$ ใงใ€ a ใŒ $C_a$ ๅ€‹ใ‚ใ‚‹ใชใ‚‰ใ€ $C_a \choose 2$ ็ต„ๆธ›ใ‚‹ใ€‚ๅ…จ้ƒจใง $sum = \sum_{i=a..z} {C_i \choose 2}$ ็ต„ๆธ›ใ‚‹ใŒใ€ $sum &gt; 0$ ใชใ‚‰ๆ–‡ๅญ—ใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใฆใ‚‚ $S$ ใฎใพใพใฎๅ ดๅˆใŒใ‚ใ‚‹ใฎใง็ญ”ใˆใซ1่ถณใ™ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ2ใฏใ“ใ‚ŒใจใฏใพใŸๅˆฅใฎ่งฃใๆ–นใง้ข็™ฝใ„ใ€‚

ABC 325-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้‡ๅฎŸ่ฃ…ใ™ใŽใฆๅด–ใซใชใฃใŸใ€‚

้…็‚นใ‹ใ‚‰A..Dๅ•้กŒใฏๆ—ฉ่งฃใๅ‹่ฒ ใ€EใพใŸใฏFๅ•้กŒใŒ่งฃใ‘ใ‚Œใฐๅคงๅน…ใซใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใŒไธŠใŒใ‚‹ๅด–ๅ›žใ ใจๆ€ใฃใฆใ„ใŸใ€‚ๅฎŸ้š›ใซใฏDๅ•้กŒใฎ้›ฃๆ˜“ๅบฆใŒ้ซ˜ใใฆๅด–ใฎไธŠใ ใฃใŸใ€‚็ตๆžœ็š„ใซใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใŒๅคงๅน…ใซไธŠๆ˜‡ใ—ใŸใ€‚

็ทๅฝ“ใŸใ‚Šใ—ใ‹ใชใ•ใใ†ใชใฎใงใ€็ทๅฝ“ใŸใ‚Šใ™ใ‚‹ใฎใ ใŒๅฎŸ่ฃ…ๅŠ›ใŒใชใ„ใจTLEใ—ใใ†ใงใ‚ใ‚‹ใ€‚C++ใฎ้ซ˜้€ŸๅŒ–ใƒ†ใ‚ฏใƒ‹ใƒƒใ‚ฏใ‚’้ง†ไฝฟใ—ใฆใฒใŸใ™ใ‚‰ๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚็ทๅฝ“ใŸใ‚Šใฎใ‚„ใ‚Šๆ–นใฏๅ˜็ด”ใชๆ–นๆณ•ใงใ‚ˆใ„ใ€‚

  • ใ‚ฟใ‚คใƒซใ‚’้ธใถๆ–นๆณ•ใฏ $2^N$ ้€šใ‚Šใ‚’ๅ…จ้ƒจ้ธใถใ€‚ๅˆถ็ด„ใ‹ใ‚‰128้€šใ‚Šใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใซใ‚ˆใ‚Œใฐใ€้ †ๅˆ—ใฎ้€”ไธญใงไฝ™ใ‚‰ใ›ใฆใ‚‚ใ‚ˆใ„ใ€‚
  • ใ‚ฟใ‚คใƒซใฎ้ข็ฉใฎๅ’ŒใŒใƒžใ‚น็›ฎๅ…จไฝ“ใฎ้ข็ฉใฎๅ’Œใจไธ€่‡ดใ—ใชใ„ใ‚ฟใ‚คใƒซ้›†ๅˆใฏๅ€™่ฃœใ‹ใ‚‰้™คๅค–ใ™ใ‚‹
  • ใ‚ฟใ‚คใƒซใฏ้•ทๆ–นๅฝขใชใฎใงใ€ใ‚ฟใ‚คใƒซใ‚’ $M$ ๆžš้ธใ‚“ใ ใ‚‰ใ€ๅ›ž่ปขใ™ใ‚‹ๆ–นๆณ• $2^M$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚ๅˆถ็ด„ใ‹ใ‚‰ๆœ€ๅคง128้€šใ‚Šใงใ‚ใ‚‹ใ€‚
  • ใ‚ฟใ‚คใƒซใ‚’่ฃ่ฟ”ใ™ๆ„ๅ‘ณใŒๅˆ†ใ‹ใ‚‰ใชใ„ใฎใ ใŒใ€่ฃ่ฟ”ใ™ใจใ„ใ†ๆŒ‡็คบใฏ็„ก่ฆ–ใ—ใฆใ‚ˆใ•ใใ†ใงใ‚ใ‚‹
  • ใ‚ฟใ‚คใƒซใ‚’ไธฆในใ‚‹้ †ๅบใ‚’ๆฑบใ‚ๆ‰“ใกใ™ใ‚‹ใ€‚7ๆžšใ‚ใ‚Œใฐ $7! = 5040$ ้€šใ‚Šใงใ‚ใ‚‹
  • ใ‚ฟใ‚คใƒซใ‚’็ฝฎใๅ ดๆ‰€ใฏใ€ไธŠใฎ่กŒใ‹ใ‚‰้ †ใซใ€ๅทฆใ‹ใ‚‰ๅณใซ็ฉบใๅœฐใ‚’ๆŽขใ—ใฆๆœ€ๅˆใซ็ฝฎใ‘ใ‚‹ๅ ดๆ‰€ใงใ‚ใ‚‹ใ€‚ใคใพใ‚Šๅฏ่ƒฝใช้™ใ‚Š่กŒ(็ธฆๆ–นๅ‘)ใŒๆœ€ใ‚‚ไธŠใงใ€ใใฎ่กŒใฎๆœ€ใ‚‚ๅณ(ๆจชๆ–นๅ‘)ใงใ‚ใ‚‹ใ€‚ๅˆถ็ด„ใ‹ใ‚‰ๆœ€ๅคง $HW = 100$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚

ใ‚ฟใ‚คใƒซใ‚’7ๆžšๅ…จ้ƒจไฝฟใ†ใจใ—ใฆใ€ $2^{7} \times 7! \times 100 \times 7 = 451584000$ ้€šใ‚Šใฎ็ต„ใฟๅˆใ‚ใ›ใŒใ‚ใ‚Šใ€็„ก็†ใใ†ใซ่ฆ‹ใˆใ‚‹ใŒๅฎŸ่ฃ…ใ™ใ‚‹ใจACใงใใฆใ—ใพใฃใŸใ€‚ๅฏ่ƒฝ่งฃใŒใ‹ใชใ‚Šๅฐ‘ใชใ„ใ‚‰ใ—ใใ€ๆŽข็ดขใฎๆ‰“ใกๅˆ‡ใ‚Šใ‚’็ดฐใ‹ใ่กŒใ†ใจใ‚ˆใ„ใ‚‰ใ—ใ„ใ€‚

  • ใ‚ฟใ‚คใƒซใŒๅณใพใŸใฏไธ‹ใซใฏใฟๅ‡บใ‚‹็ฝฎใๆ–นใฏใงใใชใ„
  • ๆ—ขใซๆ•ทใ„ใŸใ‚ฟใ‚คใƒซใจ้‡ใชใ‚‹็ฝฎใๆ–นใฏใงใใชใ„

ๅฎŸ่ฃ…ไธŠใฎC++ใƒ†ใ‚ฏใƒ‹ใƒƒใ‚ฏใจใ—ใฆใฏใ€ไปฅไธ‹ใ‚’ไฝฟใ†ใจๅฎšๆ•ฐๅ€ใŒ้€Ÿใใชใ‚‹ใจๆ€ใ†ใ€‚ๆคœ่จผใฏใ—ใฆใ„ใชใ„ใ€‚

  • ใ‚ฟใ‚คใƒซใ‚’้ธใถๆ–นๆณ•ใจใ‚ฟใ‚คใƒซใ‚’ๅ›ž่ปขใ™ใ‚‹ๆ–นๆณ•ใฏ2ใฎ้šŽไน—ใชใฎใงใ€ std::bitset<8> ใงใƒ“ใƒƒใƒˆๅ…จๆŽข็ดขใ™ใ‚‹
  • ใƒžใ‚น็›ฎๅ…จไฝ“ใฏ bool grid[10][10] ใจใ„ใ†้…ๅˆ—ใซใ™ใ‚‹ใ€‚ bool grid[16][16] ใฎๆ–นใŒใ‚ขใƒ‰ใƒฌใ‚น่จˆ็ฎ—ใŒ้€Ÿใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚
  • ใ‚ฟใ‚คใƒซใฎๅ›ž่ปขใฏ็ธฆๆจชใฎๅ…ฅใ‚Œๆ›ฟใˆใชใฎใงใ€ std::swap(tile_height, tile_width) ใ™ใ‚‹ใ€‚้ซ˜ใ•ใจๅน…ใ‚’ๅ‚็…งๆธกใ—ใงใฏใชใๅ€คๆธกใ—ใงๅ—ใ‘ๅ–ใฃใฆใ€ๅ…ƒใฎใ‚ฟใ‚คใƒซใฎ็ธฆๆจชใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใชใ„ใ‚ˆใ†ใซใ™ใ‚‹ใ€‚
  • ใ‚ฟใ‚คใƒซใ‚’็ฝฎใ้ †็•ชใฏ std::next_permutation ใงๆ›ดๆ–ฐใ™ใ‚‹
  • ใ‚ฟใ‚คใƒซใŒ็ฝฎใ‘ใ‚‹ใ€็ฝฎใ‘ใชใ„ใจใ„ใ†ใƒ•ใƒฉใ‚ฐใ‚’็”จๆ„ใ—ใฆใ€ใƒ•ใƒฉใ‚ฐใŒ็ซ‹ใฃใŸใ‚‰forใƒซใƒผใƒ—ใ‚’ๅณๆ‰“ใกๅˆ‡ใ‚‹

ใ‚ฟใ‚คใƒซใฎ้ข็ฉใฎๅ’ŒใŒใƒžใ‚น็›ฎๅ…จไฝ“ใฎ้ข็ฉใฎๅ’Œใจไธ€่‡ดใ—ใชใ‘ใ‚Œใฐใ€ใƒžใ‚น็›ฎๅ…จไฝ“ใ‚’่ฆ†ใ†ใ“ใจใŒใงใใชใ„ใฎใงใใฎใ‚ˆใ†ใชใ‚ฟใ‚คใƒซใฎ็ต„ใฟๅˆใ‚ใ›ใ‚’ๆ‰“ใกๅˆ‡ใ‚‹ใ“ใจใŒใงใใ‚‹ใ€‚ใ“ใ‚Œใ ใ‘ใงๅฎŸ่กŒๆ™‚้–“ใŒ ๆ•ฐๅˆ†ใฎไธ€ ใซใชใ‚‹ใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆใงใฏใ“ใฎๅ‡ฆ็†ใ‚’ๅ…ฅใ‚Œๅฟ˜ใ‚Œใฆใ€็ตๆžœ็š„ใซTLEใ—ใชใ‹ใฃใŸใŒๅฑใชใ„ใจใ“ใ‚ใ ใฃใŸใ€‚

่‹ฑๆ–‡ๅ•้กŒใ‚’่ฆ‹ใฆๆฐ—ใŒไป˜ใ„ใŸใฎใ ใŒใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆใฎใ‚ณใƒผใƒ‰ใฏrotateใจๆ›ธใในใใจใ“ใ‚ใ‚’flipใฎfใจๆ›ธใ„ใฆใ—ใพใฃใŸใ€‚็ขบใ‹ใซๆญฃใ—ใๅ‹•ใใฏใ™ใ‚‹ใŒใ€ใ„ใ„ใ“ใจใงใฏใชใ„ใ€‚

ABC 346-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ22ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Dๅ•้กŒใฏใƒšใƒŠใƒซใƒ†ใ‚ฃ็„กใ—ใ ใŒๅฎŸ่ฃ…ใŒ้…ใใ€Eๅ•้กŒใŒใฉใ†ใ—ใฆใ‚‚่งฃใ‘ใชใ‹ใฃใŸใ€‚ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใ‚’็†่ฉฐใ‚ใฆ่€ƒใˆใ‚‹ใ“ใจใ‚‚้‡่ฆใ ใŒใƒ†ใ‚นใƒˆใ‚ฑใƒผใ‚นใ‚’ไฝœใฃใฆๅ…ฅๅŠ›ใ™ใ‚‹ใ“ใจใ‚‚ๅŒใ˜ใใ‚‰ใ„้‡่ฆใ€ใจใ„ใ†ใฎใŒไปŠๅ›žใฎๆ•™่จ“ใงใ‚ใ‚‹ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚ŠๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚

ABC 346-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๆ–‡ๅญ—ๅˆ—ใ‚’ $w+b$ ๅ›ž็นฐใ‚Š่ฟ”ใ—ใฆใ€ๅฐบๅ–ใ‚Šๆณ•ใง้€ฃ็ถšใ™ใ‚‹ $w+b$ ๆ–‡ๅญ—ใฎ $W$ ใ‚’ $B$ ใ‚’ๆ•ฐใˆใฆใ€ $W = w, B= b$ ใ‚’ๆบ€ใŸใ™ใ‚‚ใฎใŒใ‚ใ‚‹ใ‹่ชฟในใ‚‹ใ€‚ๅ‘จๅ›žใ™ใ‚‹ใฎใงใฏใชใๆ–‡ๅญ—ๅˆ—ใ‚’ใŸใใ•ใ‚“ใคใชใ’ใ‚‹ใจๆฑบใ‚ใŸใฎใชใ‚‰ใ€ใ‚‚ใฃใจ้€ŸใๅฎŸ่ฃ…ใงใใ‚‹ใฏใšใ€‚

ABC 346-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$1..K$ ใซ็พใ‚ŒใŸๆญฃๆ•ดๆ•ฐใ‚’ std::set ใง่จ˜้Œฒใ—ใ€ $\sum_{i=1..K} i= ((K + 1)K) / 2$ ใ‹ใ‚‰ๅผ•ใใ€‚ๅ…ฅๅŠ›ไพ‹3ใŒใ„ใคใพใง็ตŒใฃใฆใ‚‚็ต‚ใ‚ใ‚‰ใชใ„ใฎใซๆ•‘ใ‚ใ‚ŒใŸใ€‚

ABC 346-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๆ–น้‡ใฏใ™ใ็ซ‹ใฃใŸใŒใ€ๅฎŸ่ฃ…ใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใŸใ€‚ใƒšใƒŠใƒซใƒ†ใ‚ฃใŒ็„กใ„ใฎใŒๆ•‘ใ„ใ€‚

ๅทฆ็ซฏใ‹ใ‚‰ 0101... ใ€ๅทฆ็ซฏใ‹ใ‚‰ 1010... ใ€ ๅณ็ซฏใ‹ใ‚‰ ...1010 ใ€ ๅณ็ซฏใ‹ใ‚‰ ...0101 ใจๆฑบใ‚ๆ‰“ใกใ—ใŸใจใใซใ€ไฝ•ๆ–‡ๅญ—ๅ–ใ‚‹ใจใฉใ‚Œใ ใ‘ใฎใ‚ณใ‚นใƒˆใซใชใ‚‹ใ‹ใ‚’็ดฏ็ฉๅ’Œใงๆฑ‚ใ‚ใ‚‹ใ€‚

ใ‚ใจใฏ้€ฃ็ถšใ™ใ‚‹ไบŒๆ–‡ๅญ—ใŒไธ€่‡ดใ™ใ‚‹ๅ ดๆ‰€ใ‚’็ทๅฝ“ใŸใ‚Šใงๆฑ‚ใ‚ใฆใ€ใ‚ณใ‚นใƒˆใฎ็ทๅ’Œใฎๆœ€ๅฐๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ๅทฆๅณใฎ็ซฏใŒ0ๅง‹ใพใ‚Šใจ1ๅง‹ใพใ‚Šใ‚’ไธŠๆ‰‹ใ็ต„ใฟๅˆใ‚ใ›ใ‚‹ใ€‚

  • $N$ ใŒๅถๆ•ฐใฎๅ ดๅˆใ€ 01..010010..10 ใพใŸใฏ 10..101101..01 ใงใ‚ใ‚‹ใ€‚
  • $N$ ใŒๅฅ‡ๆ•ฐใฎๅ ดๅˆใ€ 01..0100101..01 ใพใŸใฏ 10..1011010..10 ใงใ‚ใ‚‹

ABC 346-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้€†้ †ใคใพใ‚Šใ‚ฏใ‚จใƒชๅ…ˆ่ชญใฟใ‚’ๆ€ใ„ใคใใฎใซ30ๅˆ†ใใ‚‰ใ„ๆŽ›ใ‹ใฃใŸใ€‚ใ“ใ‚Œใงใปใผ่ฒ ใ‘ใŒๆฑบใพใฃใŸใฎใ ใŒใ€ๆฎ‹ใ‚Šๆ™‚้–“ใจใ„ใ†ใ‹ใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใฆใ‚‚่‡ชๅŠ›ACใงใใชใ‹ใฃใŸใ€‚

ใ‚ฏใ‚จใƒชๅ…ˆ่ชญใฟใ—ใฆ้€†้ †ใซๅก—ใ‚Šใคใถใ™ใ€‚่กŒใซใคใ„ใฆ่€ƒใˆใ‚‹ใŒๅˆ—ใซใคใ„ใฆใ‚‚ๅŒๆง˜ใงใ‚ใ‚‹ใ€‚

  • ่กŒ $a$ ใ‚’ใ™ใงใซๅก—ใฃใŸใฎใชใ‚‰็„ก่ฆ–ใ™ใ‚‹
  • ใใ†ใงใชใ‘ใ‚Œใฐ่กŒ $a$ ใ‚’ๅก—ใ‚‹ใ€‚่‰ฒ $x$ ใงๅก—ใฃใŸใƒžใ‚นใฎๆ•ฐใ‚’ๅข—ใ‚„ใ™ใ€‚ใฉใ‚Œใ ใ‘ๅข—ใˆใ‚‹ใ‹ใจ่จ€ใ†ใจใ€ $W$ ใ‹ใ‚‰ๆ—ขใซๅก—ใฃใŸๅˆ—ๆ•ฐใ‚’้™คใ„ใŸใ‚‚ใฎใงใ‚ใ‚‹ใ€‚ๆ—ขใซๅˆ—ใ‚’่‰ฒ $x$ ใงๅก—ใฃใŸใ‹ใฉใ†ใ‹ใฏ ้–ขไฟ‚ใชใ„ ใ€‚

$x$ ใงๆ—ขใซๅˆ—ใ‚’ๅก—ใฃใŸใ‹ใฉใ†ใ‹ใฏใ€ $x$ ใง่กŒใ‚’ๅก—ใ‚‹ใจใใฎๆ“ไฝœใซ้–ขไฟ‚ใ—ใชใ„ใ€‚่กŒๅˆ—ใŒ็›ดไบคใ™ใ‚‹ใจใ“ใ‚ใ‚’่€ƒใˆใ‚‹ใจใ€ไป–ใฎ่‰ฒใงไธŠๆ›ธใใ•ใ‚Œใ‚‹ใชใ‚‰ๅข—ใˆใชใ„ใ—ใ€ๅŒใ˜่‰ฒใงไธŠๆ›ธใใ•ใ‚Œใ‚‹ใชใ‚‰ไธŠๆ›ธใใ™ใ‚‹ๆ™‚็‚นใงๆ•ฐใˆใ‚‹ใฎใงไปŠๅข—ใ‚„ใ™ๅฟ…่ฆใฏใชใ„(ไปŠๅข—ใ‚„ใ—ใŸใ‚‰ $x$ ใŒ็›ดไบคใ™ใ‚‹ใจใ“ใ‚ใ‚’ไบŒๅบฆๆ•ฐใˆใฆใ—ใพใ†)ใ€‚ๅ…ฅๅŠ›ไพ‹ใฏ้€šใ‚‹ใŒใใ‚Œไปฅๅค–ใฏ้€šใ‚‰ใชใ„ใ€‚

ไธŽใˆใ‚‰ใ‚ŒใŸๅ…ฅๅŠ›ไพ‹ใซใ€ๅŒใ˜่‰ฒใง่กŒใจๅˆ—ใ‚’ๅก—ใ‚‹ไพ‹ใฏใชใ‹ใฃใŸใŒใ€็„กใ‘ใ‚Œใฐ่‡ชๅˆ†ใงไฝœใ‚Œใฐใ„ใ„ใ ใ‘ใฎ่ฉฑใงใ‚ใ‚‹ใ€‚ไธ‹่จ˜ใฎใƒ†ใ‚นใƒˆใ‚ฑใƒผใ‚นใ‚’ไฝœใฃใฆใ„ใ‚Œใฐใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใฎๆๅ‡บใ‚ณใƒผใƒ‰ใŒ้–“้•ใฃใฆใ„ใ‚‹ใ“ใจใŒๅˆ†ใ‹ใฃใŸใ€‚ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใ‚’็†่ฉฐใ‚ใฆ่€ƒใˆใ‚‹ใ“ใจใ‚‚ใ€ใƒ†ใ‚นใƒˆใ‚ฑใƒผใ‚นใ‚’ไฝœใฃใฆๅ…ฅๅŠ›ใ™ใ‚‹ใ“ใจใ‚‚ๅŒใ˜ใใ‚‰ใ„้‡่ฆใ ใฃใŸใ€‚

5 5 2
1 1 1
2 1 1

ABC 347-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ23ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚Dๅ•้กŒใฎใƒšใƒŠใƒซใƒ†ใ‚ฃใฏ่€ƒใˆใŒ่ถณใ‚Šใชใ‹ใฃใŸใŒใ€ใ‚ใจใฏ้ †่ชฟใงๆฐด่‰ฒใซๅพฉๅธฐใงใ‚ใ‚‹ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚ŠๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚ๅ‡บๅŠ›ใ™ใ‚‹่ฆ็ด ๆ•ฐใŒไฝ•ๅ€‹ใ‹ใฏใ€ๅ…ฅๅŠ›ใ‚’ๅ…จใฆๅ‡ฆ็†ใ—็ต‚ใ‚ใ‚‰ใชใ„ใจๅˆ†ใ‹ใ‚‰ใชใ„ใฎใงใ€็ฉบ็™ฝใจๆ”น่กŒใฎใฉใกใ‚‰ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ‹ๆณจๆ„ใ™ใ‚‹ใ€‚

ใ‚ˆใ่ชญใ‚€ใจๅ‡บๅŠ›ใฏๆ˜‡้ †ใชใฎใ ใŒใ€ๅ…ฅๅŠ›ใŒๆ˜‡้ †ใชใฎใง็ตๆžœ็š„ใซๆญฃใ—ใ‹ใฃใŸใ€‚ๅฎŒๅ…จใซ่ฆ‹่ฝใจใ—ใฆใ„ใŸใŒ้€šใฃใฆใ—ใพใฃใŸใ€‚

ABC 347-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ—ใ‚’็ทๅฝ“ใŸใ‚Šใงๅˆ‡ใ‚Šๅ‡บใ—ใฆใ€ std::set<std::string> ใง้‡่ค‡ใชใ—ๅ€‹ๆ•ฐใ‚’ๆ•ฐใˆใ‚‹ใ€‚

ABC 347-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่ผชใซใชใฃใฆ่€ƒใˆใ‚‹ใ€‚

ๅ…จใฆใฎๆ—ฅใฏใ€1้€ฑ้–“ใฎไฝ•ๆ—ฅ็›ฎใ‹ใ ใ‘ใซๆ„ๅ‘ณใŒใ‚ใ‚‹ใฎใงใ€ $D - 1$ ใ‚’ $A + B$ ใงๅ‰ฒใฃใŸไฝ™ใ‚Šใ‚’ๆฑ‚ใ‚ใฆๅ…ƒใฎ $D$ ใซ่ชญใฟๆ›ฟใˆใ‚‹ใ€‚ใ“ใฎใ‚ใจ $D$ ใ‚’ใ‚ฝใƒผใƒˆใ—ใ€ไฝ™ใ‚Šใซ $A + B$ ใ‚’่ถณใ—ใŸใ‚‚ใฎใ‚’่ฟฝๅŠ ใ—ใฆ2ๅ‘จใ™ใ‚‹(ๅฎŸใฏ2ๅ‘จใฏไฝ™่จˆใงใ€ๆœ€ๅˆใฎ่ฆ็ด ใ ใ‘ $A + B$ ใ‚’่ถณใ—ใŸใ‚‚ใฎใ‚’่ฟฝๅŠ ใ™ใ‚Œใฐใ„ใ„)ใ€‚

ไฝ™ใ‚ŠๅŒๅฃซใ‚’่ผชใซใ—ใฆ่€ƒใˆใ€ใ™ในใฆใฎไฝ™ใ‚Šใ‚’ๅŒบ้–“ $A$ ๆ—ฅใซๅŽใ‚ใ‚‰ใ‚Œใ‚Œใฐ $N$ ๅ€‹ใฎไบˆๅฎšใŒๅ…จใฆไผ‘ๆ—ฅใงใ‚ใ‚‹ใ‚ˆใ†ใซใงใใ‚‹(ๅŒบ้–“ใฎๅˆๆ—ฅใ‚’ๅŽŸ็‚นใคใพใ‚Š1้€ฑ้–“ใฎ1ๆ—ฅ็›ฎใซใ™ใ‚Œใฐใ„ใ„ใฎใง)ใ€‚ใ—ใ‹ใ—ใฉใฎๆ—ฅใ‚’ๅŽŸ็‚นใซใ™ใ‚‹ใ‹ๆŽขใ™ใจTLEใ™ใ‚‹ใ€‚ใใ“ใงๅฎš็พฉใ‚’่ชญใฟๆ›ฟใˆใ€้šฃใฎไฝ™ใ‚ŠใจใฎๅทฎใŒ $B + 1$ ๆ—ฅไปฅไธŠใ‚ใ‚Œใฐ( $B$ ใ‚ˆใ‚Šๅคงใใ‘ใ‚Œใฐ)ใใ“ใ‚’ๅŽŸ็‚นใซใ™ใ‚‹ใ€‚ๅŽŸ็‚นใ‚’็›ดๆŽฅๆฑ‚ใ‚ใ‚‹ๅฟ…่ฆใฏใชใใ€ Yes ใ‚’ๅ‡บๅŠ›ใ—ใฆ็ต‚ไบ†ใ™ใ‚Œใฐใ‚ˆใ„ใ€‚

ๅŒบ้–“ใฎๆœ€ไฝŽ้•ทใฏ $B$ ใงใฏใชใ $B + 1$ ใชใฎใงๆณจๆ„ใŒ่ฆใ‚‹ใŒใ€ๅ…ฅๅŠ›ไพ‹2ใงใ“ใฎๅขƒ็•Œๅ€คใƒใ‚ฐใŒๅˆ†ใ‹ใ‚‹ใฎใงๅŠฉใ‹ใ‚‹ใ€‚

ABC 347-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$X$ ใŒ $a$ ใƒ“ใƒƒใƒˆ็ซ‹ใกใ€ $Y$ ใŒ $b$ ใƒ“ใƒƒใƒˆ็ซ‹ใกใ€ $C$ ใŒ $c$ ใƒ“ใƒƒใƒˆ็ซ‹ใกใ€ $X$ ใจ $Y$ ใฎไธกๆ–นใง็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใŒ $d$ ใƒ“ใƒƒใƒˆใชใ‚‰ใ€ $a + b - 2d = c$ ใŒๆˆใ‚Š็ซ‹ใคใ€‚ๅผๅค‰ๅฝขใ—ใฆใ€ $a + b - c = 2d$ ใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ $a + b - c$ ใŒ่ฒ ใพใŸใฏๅฅ‡ๆ•ฐใชใ‚‰ใ€ใ“ใฎใ‚ˆใ†ใช $d$ ใ‚’ๅฎš็พฉใ™ใ‚‹ใ“ใจใฏใงใใšใ€็ญ”ใˆใฏ -1 ใงใ‚ใ‚‹ใ€‚

ๆ•ดๆ•ฐ $d$ ใŒๆฑ‚ใพใฃใŸใ‚‰ใ€ $X,Y$ ใฎใƒ“ใƒƒใƒˆใ‚’้ †ใซๅฎš็พฉใ—ใฆใ„ใใ€‚

  • $C$ ใฎ็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใซใคใ„ใฆใ€ๆœ€ๅˆใฎ $a$ ๅ€‹ใฏ $X$ ใฎใƒ“ใƒƒใƒˆใ‚’็ซ‹ใฆใ€ๆฎ‹ใ‚Šใฎ $b$ ๅ€‹ใฏ $Y$ ใฎใƒ“ใƒƒใƒˆใ‚’็ซ‹ใฆใ‚‹
  • $C$ ใฎ็ซ‹ใฃใฆใ„ใชใ„ใƒ“ใƒƒใƒˆใซใคใ„ใฆใ€ๆœ€ๅˆใฎ $d$ ๅ€‹ใฏ $X,Y$ ใฎไธกๆ–นใฎใƒ“ใƒƒใƒˆใ‚’็ซ‹ใฆใ‚‹

ใŸใ ใ— $X,Y$ ใฏๆœ€ๅคง60ใƒ“ใƒƒใƒˆใ—ใ‹ใชใ„ใฎใง $a,b,d$ ใŒไฝ™ใฃใŸใ‚‰็ญ”ใˆใฏ -1 ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๅฟ˜ใ‚ŒใฆWAใ—ใฆ1ใƒšใƒŠใงใ‚ใ‚‹ใ€‚E,Fๅ•้กŒใซๆ™‚้–“ใ‚’ๆธฉๅญ˜ใ—ใŸใ„็„ฆใ‚Šใ‹ใ‚‰ใ‹ใ€ๅ…ˆใ‚’ๆ€ฅใŽใ™ใŽใŸใ€‚

ไธŠ่จ˜ใง่งฃใชใ—ใจๅˆคๆ–ญใ—ใชใ‘ใ‚Œใฐ $(X,Y)$ ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚ใ“ใฎๆ–นๆณ•ใฏๅ…ฌๅผ่งฃ่ชฌ3ใจๅŒใ˜ใงใ€่งฃใชใ—ใฎๆกไปถใ‚’ๅ…ฌๅผ่งฃ่ชฌ1ใ‹ใ‚‰่จ€ใ„ๆ›ใˆใŸใ‚‚ใฎใงใ‚ใ‚‹ใ€‚

ABC 347-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ…ˆ้€ฑใฎๆ•™่จ“ใŒๆดปใใŸใ€‚

ใ‚ฏใ‚จใƒชใ‚’ๅ…จ้ƒจ่ชญใ‚“ใงใ„ใ‚‚ใ™ๆณ•ใ™ใ‚Œใฐใ„ใ„ใ€‚้กŒๆ„ใ‚’็†่งฃใ™ใ‚‹ใฎใŒๅคงๅค‰ใ ใŒใ€่ฆใ™ใ‚‹ใซ $p=x_i$ ใŒ $S$ ใซๅ…ฅใฃใฆใ‹ใ‚‰ๅ‡บใ‚‹ใพใง(ๅ‡บใชใ„ใพใพใ‚ฏใ‚จใƒชใŒๅฐฝใใŸใ‚‰ๆœ€ๅพŒใฎใ‚ฏใ‚จใƒชใฎๆฌกใงๅ‡บใ‚‹ใจใฟใชใ™) ใฎ $|S|$ ใ‚’ใ€ $A_p$ ใซใคใ„ใฆ่ถณใ›ใฐใ„ใ„ใ€‚

ใ‚ฏใ‚จใƒชใ‚’ไธ€้€šใ‚Š่ชญใ‚“ใงใ€ $1 \leq p=x_i \leq N$ ใฎๅ‡บๅ…ฅใ‚Šใ‚’ใ‚คใƒ™ใƒณใƒˆใจใ—ใฆใƒกใƒขใ—ใ€ $|S|$ ใฎ็ดฏ็ฉๅ’Œใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎ $p$ ใซใคใ„ใฆใ‚คใƒ™ใƒณใƒˆใ‚’ๅ†็”Ÿใ—ใ€ๅ…ฅใฃใฆๅ‡บใ‚‹ใพใงใฎ $A_p$ ใฎๅŠ ็ฎ—ๅˆ†ใ‚’ $|S|$ ใฎ็ดฏ็ฉๅ’Œใ‹ใ‚‰ๆฑ‚ใ‚ใฆ่ถณใ™ใ€‚ๆƒณๅฎš่งฃๆณ•้€šใ‚Šใงใ‚ใ‚‹ใ€‚

ABC 348-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ24ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Dๅ•้กŒใ‚’ๆฎ‹ใ‚Š56็ง’ใงACใ—ใฆๅ‹่ฒ ๆ นๆ€งใ‚’่ฆ‹ใ›ใŸใ€‚ใฎใ ใŒใ€ใใ‚‚ใใ‚‚Dๅ•้กŒใซ86ๅˆ†ๆŽ›ใ‘ใฆใฏใ„ใ‘ใชใ„ใ€‚Eๅ•้กŒใฏใ‚ณใƒณใƒ†ใ‚นใƒˆๆˆ็ธพใŒๅ‡บใ‚‹ใฎใ‚’ๅพ…ใฃใฆใ„ใ‚‹้–“ใซ่‡ชๅŠ›ACใ—ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Šๅ‡บๅŠ›ใ™ใ‚‹ใ€‚1-based indexingใงใ‚ใ‚‹ใ“ใจใซๆณจๆ„ใ™ใ‚‹ใ€‚

ABC 348-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ™ในใฆใฎ็ต„ใฟๅˆใ‚ใ›ใ‚’็ถฒ็พ…ใ™ใ‚‹ใ€‚ๅฎŸ่ฃ…ใซๆณจๆ„ใŒ่ฆใ‚‹ใ€‚

  • ่ท้›ขใฏๅนณๆ–นๆ นใงใฏใชใใ€่ท้›ขใฎไบŒไน—ใ‚’ๆ•ดๆ•ฐใงๆŒใค
  • ใใ‚Œใžใ‚Œใฎ็‚นใ‹ใ‚‰ใฎๆœ€้ ่ท้›ขใฏ std::vector<std::pair<Num,Num>> ใงๆŒใคใ€‚ใ“ใ‚Œใ‚’ใ‚ฝใƒผใƒˆใ—ใฆๅ…ˆ้ ญใฎ่ฆ็ด ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚
  • ไธŠ่จ˜ใฎใƒšใ‚ขใฏใ€่ท้›ขใ‚’็ฌฆๅทๅ่ปขใ—ใŸใ‚‚ใฎใจ้ ‚็‚น็•ชๅทใ‚’็ต„ใซใ—ใŸใ‚‚ใฎใซใ™ใ‚‹ใ€‚ใ“ใ†ใ™ใ‚Œใฐใ‚ฝใƒผใƒˆใ—ใŸใจใใ€่ท้›ขใŒ้ ใ„้ ‚็‚นใŒๅ…ˆใ€่ท้›ขใŒๅŒใ˜ใชใ‚‰้ ‚็‚น็•ชๅทใŒๅฐใ•ใ„้ ‚็‚นใŒๅ…ˆใซใชใ‚‹
  • ้ ‚็‚น็•ชๅทใ‚’0-based indexingใง็ฎก็†ใ™ใ‚‹ใชใ‚‰ใ€1-based indexingใซๆˆปใ™ใ“ใจใ‚’ๅฟ˜ใ‚Œใชใ„

ABC 348-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Min-MaxใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

ใใ‚Œใžใ‚Œ่‰ฒใฎใŠใ„ใ—ใ•ใ‚’ std::map<Num, std::set<Num>> ใงๆŒใคใ€‚ใŠใ„ใ—ใ•ใจ่‰ฒใฎๅˆถ็ด„ใ‹ใ‚‰ใ€ใƒ™ใ‚ฏใƒˆใƒซใงใฏใชใ้€ฃๆƒณ้…ๅˆ—ใงๆŒใคใ€‚

้€ฃๆƒณ้…ๅˆ—ใซๅ…ฅใฃใฆใ„ใ‚‹้›†ๅˆใฎใ†ใกใ€ๆœ€ใ‚‚ๅฐใ•ใ„ๅ€คใฏ std::set::begin() ใงๅˆ†ใ‹ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎ่‰ฒใซใคใ„ใฆใฎๆœ€ๅฐๅ€คใ‚’้›†ใ‚ใฆใ€ใใฎๆœ€ๅคงๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚็ญ”ใˆใ‚‹ใฎใฏใŠใ„ใ—ใ•ใงใ‚ใฃใฆใ€่‰ฒใงใฏใชใ„ใฎใงๆณจๆ„ใ™ใ‚‹ใ€‚

ABC 348-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

86ๅˆ†7ใƒšใƒŠใฎๆณฅๆฒผใงใ‚ใ‚‹ใ€‚ใฉใ†ใ—ใฆใ“ใ‚“ใชใซใƒ‡ใƒใƒƒใ‚ฐใซๆ™‚้–“ใŒๆŽ›ใ‹ใฃใŸใฎใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใ€‚

ใ‚„ใ‚ŠใŸใ„ใ“ใจใฏBFSใซไธ€ๅทฅๅคซใงใ‚ใ‚‹ใ€‚ไธ€ใค็›ฎใฏใ€ๅง‹็‚นใซ่–ฌใŒใ‚ใ‚Œใฐใใฎๅ ดใง้ฃฒใ‚“ใงใ€ใ‚จใƒใƒซใ‚ฎใƒผใ‚’ๆญฃใฎๅ€คใซใ—ใฆ็งปๅ‹•ใงใใ‚‹ใ ใ‘็งปๅ‹•ใ™ใ‚‹ใ€‚ๅง‹็‚นใซ่–ฌใŒใชใ‘ใ‚Œใฐๅ‹•ใ‘ใชใ„ใฎใง็ญ”ใˆใฏ No ใงใ‚ใ‚‹ใ€‚

ใ‚ใ‚‹ใƒžใ‚นใฎใ‚จใƒใƒซใ‚ฎใƒผใงๅ‹•ใ‘ใ‚‹็ฏ„ๅ›ฒใฏใ€็งปๅ‹•ๅฏ่ƒฝใชใƒžใ‚นใซไธ€ๆ‰‹ๅ‹•ใใ”ใจใซใ‚จใƒใƒซใ‚ฎใƒผใŒ1ๆธ›ใ‚‹ใ€ใจใ„ใ†BFSใงๆฑ‚ใพใ‚‹ใ€‚ใ“ใ“ใง่–ฌใŒใ‚ใฃใŸใ‚‰้ฃฒใ‚“ใงใ‚‚ใ„ใ„ใ—้ฃฒใพใชใใฆใ‚‚ใ‚ˆใ„ใ€‚ใ“ใฎใ“ใจใฏๅ•้กŒๆ–‡ใซๆ›ธใ„ใฆใ‚ใ‚‹ใŒใ€้ฃฒใพใชใ‘ใ‚Œใฐใ„ใ‘ใชใ„ใจๅ‹˜้•ใ„ใ™ใ‚‹ใจๅ…ฅๅŠ›ไพ‹ใŒ่งฃใ‘ใชใ„ใ€‚ใ“ใ‚Œใ‚’็†่งฃใงใใšใซ็„ฆใฃใŸใฎใŒๆณฅๆฒผใฎๅ…ฅใ‚Šๅฃใ ใฃใŸใ€‚

่–ฌใ‚’้ฃฒใ‚€ใฎใฏใ€ใใฎใƒžใ‚นใซๅˆฐ้”ใ—ใŸๆ™‚็‚นใงใฎใ‚จใƒใƒซใ‚ฎใƒผใฎๆ—ข็Ÿฅใฎๆœ€ๅคงๅ€ค $E_{r,c,max}$ ใŒใ€่–ฌใ‚’้ฃฒใ‚“ใ ๅพŒใซใ‚จใƒใƒซใ‚ฎใƒผ $E_{r,c,e}$ ใ‚’ไธ‹ๅ›žใ‚‹ใจใใซ้™ใ‚‹ใ€‚ใƒžใ‚นใซๅˆฐ้”ใ—ใŸๆ™‚็‚นใงใฎใ‚จใƒใƒซใ‚ฎใƒผใฎๆ—ข็Ÿฅใฎๆœ€ๅคงๅ€ค $E_{r,c,max}$ ใฏใ€่ฒ ใฎๅ€คใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚0ใงๅˆๆœŸๅŒ–ใ—ใŸใ‚‰ใชใ‹ใชใ‹ๅ…ฅๅŠ›ไพ‹ใŒๅˆใ‚ใชใ‹ใฃใŸใ€‚ใ“ใฎ่พบใ‚Šใ‹ใ‚‰่ชฟๅญใŒใŠใ‹ใ—ใ„ใ€‚

BFSใงใ‚ญใƒฅใƒผใซไน—ใฃใ‘ใ‚‹ใ‚จใƒใƒซใ‚ฎใƒผใ‚’ $max(E_{r,c,max}, E_{r,c,e})$ ใซ่ฃœๆญฃใ™ใ‚Œใฐใ‚ˆใ„ใฎใ ใŒใ€ไฝ•ใ‚’ๅ‹˜้•ใ„ใ—ใŸใ‹่–ฌใŒใ‚ใ‚‹ใƒžใ‚นใง้ฃฒใ‚€ใฎใงใฏใชใใ€่–ฌใŒใ‚ใ‚‹ใƒžใ‚นใซ็งปๅ‹•ใ™ใ‚‹ใจใใซ็งปๅ‹•ๅ…ˆใง้ฃฒใ‚€ใ‚ˆใ†ใซๅฎŸ่ฃ…ใ—ใŸใ€‚ใ“ใ†ใ™ใ‚‹ใจ4-5 WAsใซใชใ‚‹ใฎใ ใŒใ€ๆ•ฐๅๅˆ†ๆŽ›ใ‹ใฃใฆใ‚‚ๅŽŸๅ› ใŒใคใ‹ใ‚ใชใ‹ใฃใŸใ€‚ใƒ‡ใƒใƒƒใ‚ฐใ™ใ‚‹ใ‚ˆใ‚Šใ€ใ„ใฃใใฎใ“ใจๅฎŸ่ฃ…ใ‚’ๅ…จ้ƒจๆจใฆใฆๆœ€ๅˆใ‹ใ‚‰ๆ›ธใ็›ดใ—ใŸๆ–นใŒๆ—ฉใ‹ใฃใŸใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

ใ‚ใจใฏBFSใŒ็„ก้™ใƒซใƒผใƒ—ใ‚„TLEใ—ใชใ„ใ‚ˆใ†ใซใ€็งปๅ‹•ๅ…ˆใฎใƒžใ‚นใฎใ‚จใƒใƒซใ‚ฎใƒผใŒๆ—ข็Ÿฅใฎๆœ€ๅคงๅ€คไปฅไธ‹ใชใ‚‰็งปๅ‹•ใ—ใชใ„ใ‚ˆใ†ใซใ‚ฌใƒผใƒ‰ใ™ใ‚‹ใ€‚ใ“ใฎใ“ใจใ‹ใ‚‰่–ฌใ‚’้ฃฒใฟใŸใ„ใชใ‚‰ไฝ•ๅบฆ้ฃฒใ‚“ใงใ‚‚ๆง‹ใ‚ใชใ„ใจ่จ€ใˆใ‚‹ใ€‚ใ“ใฎ่พบใฏBFSใฎๅŸบๆœฌใ ใŒใ€็„ฆใฃใฆใ„ใ‚‹ใจ่จณใŒๅˆ†ใ‹ใ‚‰ใชใใชใ‚‹ใ€‚ใ‚ดใƒผใƒซใซๅˆฐ้”ๅฏ่ƒฝใ‹ใฉใ†ใ‹ใฏunion-findๆœจใซใ—ใŸใŒใ€BFSใงๅฐใ‚’ใคใ‘ใ‚Œใฐใ‚ˆใ‹ใฃใŸใ€‚ใจใ„ใ†ใ‹ๆœ€ๅˆใฎ้–“้•ใฃใŸๅฎŸ่ฃ…(่–ฌใงๅˆฐ้”ๅฏ่ƒฝใช็ฏ„ๅ›ฒใ‚’ใƒžใƒผใ‚ธใ™ใ‚‹)ใ‚’ๅผ•ใใšใฃใŸใฎใŒใพใšใ‹ใฃใŸใ€‚

22:39:04ใซๆๅ‡บใ—ใ€่พ›ใ†ใ˜ใฆ4ๅฎŒใ ใฃใŸใ€‚Ratedใฎใ‚ณใƒณใƒ†ใ‚นใƒˆใงใ—ใ‹ๅพ—ใ‚‰ใ‚Œใชใ„็ทŠๅผตๆ„Ÿใงใ‚ใ‚Šใ€ใใ†ใ„ใ†ๆ„ๅ‘ณใงใฏๅพ—ใ‚‹ใ‚‚ใฎใŒใ‚ใฃใŸใจ่จ€ใˆใ‚‹ใ€‚ใจใฏใ„ใˆใ€ใ‚ใพใ‚Šใซใƒ‡ใƒใƒƒใ‚ฐใŒไธ‹ๆ‰‹ใ™ใŽใฆACใ™ใ‚‹ใฎใ‚’็œบใ‚ใฆใ„ใŸใ‚‰ใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใ‚Šใ€Eๅ•้กŒใฏ่งฃใใฉใ“ใ‚ใ‹ๅ•้กŒๆ–‡ใ‚’่ชญใ‚€ๆ™‚้–“ใ™ใ‚‰ใชใ‹ใฃใŸใ€‚

ABC 348-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ณใƒณใƒ†ใ‚นใƒˆๆˆ็ธพใŒๅ‡บใ‚‹ใ‚’ๅพ…ใฃใฆใ„ใ‚‹ใจใ„ใ†ใ‹ใ€ใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใŒๅ†ทใˆใ‚‹ใฎใŒ็ขบๅฎŸใชใฎใงใ‚ใพใ‚Š่ฆ‹ใŸใใชใ„ใฎใงใใฎ้–“ใซ่งฃใ„ใŸใ€‚้ ‚็‚นใ‚’็งปๅ‹•ใ™ใ‚‹ใ”ใจใซ $\sum$ ใฎ้ƒจๅˆ†ใŒๅทฎๅˆ†ๆ›ดๆ–ฐใงใใ‚‹ใฎใ ใ‚ใ†ใจๆ€ใ„ใ€ใ˜ใฃใใ‚Š่€ƒใˆใŸใ‚‰ใ‚„ใฏใ‚Šใใ†ใ ใฃใŸใ€‚

ๆœจๆง‹้€ ใชใฎใง้ ‚็‚น1ใ‚’ๆ นใจๆฑบใ‚ๆ‰“ใกใ—ใฆใ€ไปฅไธ‹ใฎๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚DFSใงๆฑ‚ใพใ‚‹ใฎใง่จˆ็ฎ—้‡ใฏ $O(N)$ ใงใ‚ใ‚‹ใ€‚

  • ใ™ในใฆใฎ $C$ ใฎๅ’Œ $sum_c = \sum_{j=1..N} C_i$
  • ้ ‚็‚น $v$ ใจใใฎๅญ้ ‚็‚นใ€ใคใพใ‚Š $v$ ใ‚ˆใ‚Š่‘‰ใฎๅดใซใ‚ใ‚‹้ ‚็‚น้›†ๅˆใ‚’ $U_v$ ใจใ™ใ‚‹ใ€‚ $U_v$ ใฏ $v$ ใ‚’ๅซใ‚€ใ€‚
  • $U_v$ ใซใคใ„ใฆใฎ $C$ ใฎๅ’Œใ‚’ $S_v$ ใจใ™ใ‚‹ใ€‚
  • ้ ‚็‚น1ใ‹ใ‚‰่ท้›ขใซๅŸบใฅใใ€ $U_v$ ใซใคใ„ใฆใฎ $f(v)$ ใคใพใ‚Š $\sum_{i \in U_v} (C_i \times d(1,i))$ ใ‚’ $W_i$ ใจใ™ใ‚‹ใ€‚ๆœ€็ต‚็š„ใซใฏ $W_1$ ใ ใ‘ใŒๅฟ…่ฆใ ใŒใ€้€”ไธญ่จˆ็ฎ—ใซใ™ในใฆใฎ้ ‚็‚นใฎ $W$ ใŒ่ฆใ‚‹ใ€‚

่งฃใฎไธŠ้™ใฏ $f(1) = W_1$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๅฟ˜ใ‚Œใฆ้›‘ใซไธŠ้™ใ‚’ $10^{18}$ ใจใ‹ใ™ใ‚‹ใจWAใ™ใ‚‹ใ€‚ใ“ใ“ใ‹ใ‚‰DFSใงๅ…จ้ ‚็‚นใ‚’ๆŽข็ดขใ—ใฆใ€ $f(v)$ ใฎๆœ€ๅฐๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

้ ‚็‚น $v$ ใฎๅญ้ ‚็‚นใคใพใ‚ŠๆŽฅ็ถšใ—ใฆใ„ใ‚‹้ ‚็‚นไปฅๅค–ใง่ฆชไปฅๅค–ใฎ้ ‚็‚น้›†ๅˆใ‚’ $T_v$ ใจใ™ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎๅญ้ ‚็‚น $j \in T_v$ ใ‚’่จชใ‚Œใฆ $f(j)$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ $f(j)$ ใฏ $f(v)$ ใ‹ใ‚‰

  • $f(j)$ ใซๅฏ„ใฃใŸใ“ใจใง $S_j$ ใ ใ‘ๆธ›ใ‚‹
  • $v$ ใ‹ใ‚‰้›ขใ‚ŒใŸใ“ใจใง $sum_c - S_j$ ใ ใ‘ๅข—ใˆใ‚‹

ใฎใงใ“ใฎใ‚ˆใ†ใซๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ $S$ ใ‚’ใ™ใงใซๆฑ‚ใ‚ใฆใ„ใ‚‹ใฎใงใ“ใฎๆ›ดๆ–ฐๅ›žๆ•ฐใฏ $O(N)$ ใงใ‚ใ‚‹ใ€‚

ไปฅไธŠใฎใ‚ˆใ†ใซ2ๅ›žDFSใ™ใ‚‹ใจใ€ $f(1..N)$ ใฎๆœ€ๅฐๅ€คใŒๆฑ‚ใพใ‚‹ใ€‚ๆœจใฎ้‡ๅฟƒใ‚‚ๅ…จๆ–นไฝๆœจDPใ‚‚็Ÿฅใ‚‰ใชใ‹ใฃใŸใŒใ€ๅ…ฌๅผ่งฃ่ชฌ2ใจไธŠ่จ˜ใŒใ ใ„ใŸใ„ๅŒใ˜ใงใ‚ใ‚‹ใ€‚

ABC 349-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ25ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,Cใฎ3ๅฎŒใง้ŽๅŽปๆœ€ไฝŽใฎใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใซ็ต‚ใ‚ใฃใŸใ€‚Dๅ•้กŒใฏไธ€่ฆ‹ใ—ใฆ่งฃๆณ•ใฎ็›ฎ้€”ใŒ็ซ‹ใŸใšใ€่ซฆใ‚ใฆๅ‘ใ‹ใฃใŸEๅ•้กŒใฎใƒ‡ใƒใƒƒใ‚ฐใŒๅฎŒไบ†ใ›ใšๅ…ฑๅ€’ใ‚Œใซ็ต‚ใ‚ใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡ใ‚’็†่งฃใ™ใ‚‹ใฎใŒๅคงๅค‰ใ ใŒใ€่ฆใ™ใ‚‹ใซ $\sum_{i=1..(N-1)} A_i$ ใฎ็ฌฆๅทๅ่ปขใงใ‚ใ‚‹ใ€‚

ABC 349-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Aๅ•้กŒใซ็ถšใ„ใฆๅ•้กŒๆ–‡ใ‚’็†่งฃใ™ใ‚‹ใฎใŒๅคงๅค‰ใงใ‚ใ‚‹ใ€‚่ฆใ™ใ‚‹ใซๆ–‡ๅญ—ใฎๅ‡บ็พๅ›žๆ•ฐใ‚’ๆ•ฐใˆใฆใ€ๅ‡บ็พๅ›žๆ•ฐใŒ0ใ‹2ไปฅๅค–ใชใ‚‰ No ใ‚’ๅ‡บๅŠ›ใ—ใ€ใใฎใ‚ˆใ†ใชใ“ใจใŒใชใ‘ใ‚Œใฐ Yes ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚ๆœ€ๅˆใซ (ๆ–‡ๅญ—็จฎ, ๆ–‡ๅญ—ใฎๅ‡บ็พๅ›žๆ•ฐ) ใฎ้€ฃๆƒณ้…ๅˆ—ใ‚’ไฝœใ‚Šใ€ใ“ใ‚Œใ‚’ (ๆ–‡ๅญ—ใฎๅ‡บ็พๅ›žๆ•ฐ, ๆ–‡ๅญ—็จฎ) ใฎ้€ฃๆƒณ้…ๅˆ—ใ‚„ใƒ™ใ‚ฏใ‚ฟใซๅค‰ๆ›ใ™ใ‚‹ใ€‚ๅ‡บ็พๅ›žๆ•ฐ0ๅ›žใฎใ‚ฑใƒผใ‚นใฏๆ˜Ž็คบ็š„ใซ่กจใ‚Œใชใ„ใฎใง็„ก่ฆ–ใ—ใฆใ„ใ„ใ€‚

ABC 349-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้€ฃ็ถšใ—ใชใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ—ใฏๅฐบๅ–ใ‚Šๆณ•ใงๆฑ‚ใ‚ใ‚‹ใฎใŒๅ…ธๅž‹ใงใ‚ใ‚‹ใ€‚ใ—ใ‹ใ—ใชใœใ‹ใ“ใ“ใซ่€ƒใˆใŒๅŠใฐใšใ€ $26^3$ ้€šใ‚Šใฎ็Šถๆ…‹้ท็งปใ‚’ๅ…จ้ƒจไฝœใฃใŸใ‚‰TLEใ™ใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใจๆ€ใฃใฆๆ‚ฉใ‚“ใงใ—ใพใฃใŸใ€‚ใ“ใ†ใ„ใ†ใจใใฎๅ›ž้ฟ็ญ–ใจใ—ใฆๆญฃ่ฆ่กจ็พใง่งฃใ„ใŸใฎใ ใŒ็ต‚็ซฏใฎ .* ใซ X ใซๆ‰‹้–“ๅ–ใ‚Šใ€็ตๅฑ€่งฃ็ญ”ใซ14ๅˆ†ๆŽ›ใ‹ใฃใŸใ€‚ๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใงใ‚ใ‚‹ใ€‚ใ—ใ‹ใ‚‚ๅฎŸ่กŒๆ™‚้–“ใŒ 754 ms ใจใ€ๅˆถ็ด„ๆฌก็ฌฌใงใฏTLEใ ใฃใŸใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚ใจใฏใ„ใˆๅ…ฌๅผ่งฃ่ชฌ2ใŒๆญฃ่ฆ่กจ็พใชใฎใงๆƒณๅฎš่งฃๆณ•ใงใฏใ‚ใ‚‹( $S$ ใซ x ใ‚’ไป˜ใ‘ใ‚‹ใ“ใจใฏๆ€ใ„ใคใ‹ใชใ‹ใฃใŸ)ใ€‚

ๅฐบๅ–ใ‚Šๆณ•ใ‚’ไฝฟใ†ใจ ใ“ใ† ๅฎŸ่ฃ…ใงใใ‚‹ใ€‚้žๅธธใซ็ฐกๆฝ”ใชใ‚ณใƒผใƒ‰ใงใ‚ใ‚‹ใ€‚ใ„ใคใพใงใ‚‚ๅฐบๅ–ใ‚Šๆณ•ใŒ่‹ฆๆ‰‹ใจ้€ƒใ’ๅ›žใฃใฆใ„ใ‚‹ใจใ“ใ†ใ„ใ†ใจใใซๆ•ใพใ‚‹ใ€‚ใใ‚‚ใใ‚‚ $T$ ใŒ $10^5$ ๆ–‡ๅญ—ใชใ‚‰ๅฐบๅ–ใ‚Šๆณ•ใ—ใ‹ใ‚ใ‚Šใˆใชใ„ใฎใงใ€ $T$ ใŒ3ๆ–‡ๅญ—ใ ใจใ‹่‹ฑๅฐๆ–‡ๅญ—ใŒ26็จฎ้กžใ ใจใ‹ใซๆทฑใ„ๆ„ๅ‘ณใ‚’่ชญใฟๅ–ใ‚Š้ŽใŽใŸ(็ขบใ‹ใซCๅ•้กŒใงใฏใ“ใ‚Œใ‚‰ใซๆ„ๅ‘ณใŒใ‚ใ‚‹ใ“ใจใŒๅคšใ„ใŒไปŠๅ›žใฏ้•ใฃใŸ)ใ€‚

ABC 349-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไธ€่ฆ‹ใ—ใฆใฉใ†่งฃใ„ใŸใ‚‰ใ‚ˆใ„ใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใฎใง่ซฆใ‚ใฆEๅ•้กŒใซๅ‘ใ‹ใฃใŸใ€‚Eๅ•้กŒใŒ่งฃใ‘ใชใ‹ใฃใŸใ€ใจใ„ใ†ใ‹ใƒ‡ใƒใƒƒใ‚ฐใŒ็ต‚ใ‚ใ‚‰ใชใ‹ใฃใŸใฎใงใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆ็ต‚ไบ†็›ดๅพŒใ‹ใ‚‰่งฃใ„ใฆ 23:34:19 ใซ่งฃใ‘ใŸใ€‚54ๅˆ†ๆŽ›ใ‹ใ‚‹ใจใ„ใ†่‹ฆๆˆฆใฏ็ขบใ‹ใซไบˆๆƒณ้€šใ‚Šใ ใŒใ€ใชใœใ“ใ‚“ใชใซๆ™‚้–“ใŒๆŽ›ใ‹ใฃใŸใฎใ ใ‚ใ†ใ€‚

$L$ ใ‚’2้€ฒๆ•ฐ่กจ่จ˜ใ—ใŸใจใใฎใ€LSBๅดใซ้€ฃ็ถšใ™ใ‚‹0(trailing zeros)ใฎใ™ใๅทฆๅด(MSBๅด)ใฎ1ใ‚’็นฐใ‚ŠไธŠใ’ใ‚‹ใจ $L$ ใŒ $R$ ใซ่ฟ‘ใฅใใจไบˆๆƒณใงใใ‚‹ใ€‚ๅฎŸ้š›ใใฎ้€šใ‚Šใงใ€trailing zeros ใŒ $W$ ๅ€‹ใฎใจใใซใ€ $L$ ใซ $2^W$ ใ‚’่ถณใ—ใฆๅŒบ้–“ $[L,L + 2^W)$ ใ‚’ไฝœใ‚Š trailing zeros ใ‚’ๅปถใฐใ™ใ€‚ $L := L + 2^W$ ใจใ—ใฆใ“ใฎๆ“ไฝœใ‚’ $L &lt; R$ ใงใ‚ใ‚‹้™ใ‚Š็นฐใ‚Š่ฟ”ใ™ใ€‚ใŸใ ใ—ใ€ $L = 0$ ใฎใจใใฏtrailing zerosใจใ„ใ†ๆฆ‚ๅฟตใŒใชใ„ใฎใงใ“ใฎๆ“ไฝœใฏ่กŒใ‚ใชใ„ใ€‚

ไธŠ่จ˜ใฎๆ“ไฝœใŒ็ต‚ใ‚ใฃใŸๆ™‚็‚นใงใ€ $L$ ใฏ $0$ ใงใชใ‘ใ‚Œใฐ2ใฎในใไน—ใ€ใคใพใ‚Š้ซ˜ใ€…1ใƒ“ใƒƒใƒˆใ ใ‘็ซ‹ใฃใฆใ„ใ‚‹ใ€‚ไปŠๅบฆใฏ $R$ ใฎใƒ“ใƒƒใƒˆใ‚’็ซ‹ใฆใ‚‹ใ“ใจใ‚’่€ƒใˆใ‚‹ใ€‚ $R$ ใŒ2้€ฒๆ•ฐใง $V$ ๆกใจใ™ใ‚‹ใ€‚ $i=(V-1)..0$ ใƒ“ใƒƒใƒˆ็›ฎใซใคใ„ใฆใ€ $R$ ใŒ1ใง $L$ ใŒ0ใชใ‚‰ใ€ $L$ ใซ $S = 2^i$ ใ‚’่ถณใ™ใ“ใจใง $R$ ใฎใƒ“ใƒƒใƒˆใ‚’็ซ‹ใฆใ‚‹ใ€‚ใคใพใ‚ŠๅŒบ้–“ $[L, L+2^i)$ ใ‚’ไฝœใ‚‹ใ€‚ $L := L + 2^i$ ใจใ—ใฆใ€ใ“ใฎๆ“ไฝœใ‚’ $L = R$ ใซใชใ‚‹ใพใง็นฐใ‚Š่ฟ”ใ™ใ€‚

ไธŠ่จ˜ใฎๆ–นๆณ•ใฏๅ…ฌๅผ่งฃ่ชฌ2ใจใ ใ„ใŸใ„ๅŒใ˜ใงใ‚ใ‚‹ใ€‚trailing zerosใฎใ™ใๅทฆใฎ1ใ ใ‘ใ‚’ๆฎ‹ใ™ๆ–นๆณ• n & -n ใ‚’ๅฟ˜ใ‚Œใฆใ„ใŸใ€‚

Trailing zeros ใซๆณจ็›ฎใ™ใ‚‹ใ“ใจใฏใ™ใๅˆ†ใ‹ใฃใŸใŒใ€่ค‡้›‘ใชๅ ดๅˆๅˆ†ใ‘ใŒๅฟ…่ฆใจๆ€ใฃใฆๆ‚ฉใ‚“ใงใ—ใพใฃใŸใ€‚ $L = 0$ ใ•ใˆๆฐ—ใ‚’ไป˜ใ‘ใ‚Œใฐใ€ $L$ ใจ $R$ ใฎๆกๆ•ฐใŒ็•ฐใชใ‚‹ใฎใฏๆฐ—ใซใ—ใชใใฆใ‚ˆใ„ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ๅฎŸ่ฃ…ใ—ใŸใ“ใจใŒใ‚ใ‚‹ใ—ใ€ๅŒใ˜ใ‚ˆใ†ใชๅ›ณใ‚’ๆ‰‹ๅ…ƒใงๆใ„ใŸใฎใซใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ๆ€ใ„ๅ‡บใ›ใชใ‹ใฃใŸใฎใงใ€ๅ…ธๅž‹ๅ•้กŒใ‚’ใ‚ˆใ็Ÿฅใ‚‰ใ‚ŒใŸๅ•้กŒใซ่จ€ใ„ๆ›ใˆใ‚‹่ƒฝๅŠ›ใŒ็งใซใฏ่ถณใ‚Šใชใ„ใ€‚็ขบใ‹ใซใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใฎๆœจๆง‹้€ ใจๅŒใ˜ใ‚„ใ‚Šๆ–นใง ใ“ใ† ๅฎŸ่ฃ…ใงใใ‚‹ใ—ใ€ $L=0$ ใ‚’็‰นๅˆฅๆ‰ฑใ„ใ™ใ‚‹ๅฟ…่ฆใ‚‚ใชใ„ใ€‚

ABC 349-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Dๅ•้กŒใจ็•ฐใชใ‚Šใ€ใ‚ฒใƒผใƒ ๆœจใ‚’ๆง‹ๆˆใ™ใ‚‹ใ ใ‘ใจใ™ใใ‚ใ‹ใฃใŸใ€‚็ขบใ‹ใซใใฎ้€šใ‚Šใ ใŒใ€ใ‚ˆใ‚Šใซใ‚ˆใฃใฆ้–“้•ใˆใŸใฎใฏ3็›ฎไธฆในใฎๆˆ็ซ‹ๆกไปถใงใ‚ใ‚‹ใ€‚ๅทฆใ‹ใ‚‰ๅณใ€ไธŠใ‹ใ‚‰ไธ‹ใซ 0..8 ใ‚’ไธฆในใŸๆ™‚ใ€็ธฆๆจชๆ–œใ‚ใซ3ๅ€‹ไธฆใถใชใ‚‰่‡ชใƒžใ‚นไปฅๅค–ใฎๆฎ‹ใ‚Šใฎ2ใƒžใ‚นใฏไฝ•ใ‹ใจใ„ใ†่กจใ‚’ไฝœใ‚‹ใ€‚ๅฎšๆ•ฐๅ€้ซ˜้€ŸๅŒ–ใ‚’็›ฎ่ซ–ใ‚“ใงๅ€คใ‚’ใƒใƒผใƒ‰ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ—ใŸใฎใ ใŒใ€ใชใ‚“ใจใ“ใ‚ŒใŒ้–“้•ใฃใฆใ„ใŸใ€‚

0 1 2
3 4 5
6 7 8

ใ“ใกใ‚‰ใŒๆญฃใ—ใใ€

std::vector<std::vector<Vec>> lines {
    {{1,2}, {3,6}, {4,8}},
    {{0,2}, {4,7}},
    {{0,1}, {5,8}, {4,6}},
    {{0,6}, {4,5}},
    {{3,5}, {1,7}, {0,8}, {2,6}},
    {{2,8}, {3,4}},
    {{0,3}, {7,8}, {2,4}},
    {{1,4}, {6,8}},
    {{2,5}, {6,7}, {0,4}}
};

ใ“ใกใ‚‰ใŒ้–“้•ใ„ใงใ‚ใ‚‹ใ€‚ใ“ใฎ่กจใ•ใˆๅˆใฃใฆใ„ใ‚Œใฐ 22:39:48 ใฎ ๆๅ‡บ ใŒACใงใใŸใฎใง็—›ๆจใงใ‚ใ‚‹ใ€‚ใ‚ˆใ่€ƒใˆใŸใ‚‰่‡ชๅ‹•็”Ÿๆˆใ™ใ‚Œใฐใ‚ˆใ‹ใฃใŸใฎใ ใŒใ€่‡ชๅ‹•็”Ÿๆˆใฎใƒใ‚ฐใจๆ‰‹ๆ›ธใใ—ใŸ่กจใฎใƒใ‚ฐใจใ€ใฉใกใ‚‰ใŒใƒ‡ใƒใƒƒใ‚ฐใ—ใ‚„ใ™ใ„ใ‹ใŒๆ‚ฉใพใ—ใ„ใ€‚

std::vector<std::vector<Vec>> lines {
    {{1,2}, {3,6}, {4,8}},
    {{0,2}, {4,7}},
    {{0,1}, {5,8}, {4,6}},
    {{0,6}, {4,5}},
    {{3,5}, {1,7}, {0,8}, {2,6}},
    {{2,8}, {3,4}},
    {{0,3}, {7,8}, {2,4}},
    {{1,7}, {6,8}},
    {{2,8}, {6,7}, {0,4}}
};

่งฃใๆ–นใฏใ‚ฒใƒผใƒ ๆœจใฎๅฎŸ่ฃ…ใใฎใ‚‚ใฎใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใ‚‚ใพใ•ใซใใ†ใ—ใฆใ„ใ‚‹ใ€‚ std::bitset ใ‚’ไฝฟใ†ใจ้€Ÿใใชใ‚‹ใ€‚

  • ๅˆๆ‰‹=ๅ…ˆๆ‰‹็•ชใฎ1ๆ‰‹็›ฎใ‚’ๆฑบใ‚ๆ‰“ใกใ™ใ‚‹ใ€‚ 0..8 ใƒžใ‚น็›ฎใ‚’ๅˆๆ‰‹ใจใ—ใฆใ€ใใฎๅพŒใฎ็ตๆžœใคใพใ‚Š2ๆ‰‹็›ฎใŒๅ…ˆๆ‰‹ๅฟ…ๅ‹ใจใชใ‚‹ๅ ดๅˆใŒไธ€ใคใงใ‚‚ใ‚ใ‚Œใฐๅ…ˆๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚ใ„ใšใ‚Œใฎๅ ดๅˆใ‚‚ๅ…ˆๆ‰‹ๅฟ…ๅ‹ใงใชใ‘ใ‚ŒใฐๅพŒๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚
  • $i=2..9$ ๆ‰‹็›ฎใซใŠใ„ใฆใ€ $i$ ใŒๅฅ‡ๆ•ฐใชใ‚‰Takahashiใ€ $i$ ใŒๅถๆ•ฐใชใ‚‰Aoki ใฎๆ‰‹็•ชใงใ‚ใ‚‹ใ€‚ $i$ ๆ‰‹็›ฎใฎๆ‰‹็•ชใฎ่€…ใ‚’ $P_i$ ใ€ใใ†ใงใชใ„่€…ใ‚’ $\lnot P_i$ ใจ็ฝฎใใ€‚
  • $i=2..9$ ๆ‰‹็›ฎใซใŠใ„ใฆใ€็ฝฎใ„ใŸใƒžใ‚นใ‚’ๅซใ‚ใฆ็ธฆๆจชๆ–œใ‚ใซ่‰ฒใŒใใ‚ใˆใฐ $P_i$ ใฎๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚
  • $i=2..9$ ๆ‰‹็›ฎใซใŠใ„ใฆใ€็ฝฎใ„ใŸใƒžใ‚นใ‚’ๅซใ‚ใฆ็ธฆๆจชๆ–œใ‚ใซ่‰ฒใŒใใ‚ใ‚ใชใ‘ใ‚Œใฐใ€ $i+1$ ๆ‰‹็›ฎใ‚’ๆŽข็ดขใ™ใ‚‹ใ€‚ $i+1$ ใฎๆ‰‹็•ชใซ $P_i$ ใŒๅฟ…ๅ‹ใฎๆ‰‹็•ชใŒใ‚ใ‚Œใฐใ€ ใใฎ $i$ ๆ‰‹็›ฎใฏ $P_i$ ๅฟ…ๅ‹ใงใ‚ใ‚‹(ใใฎๆ‰‹ใ‚’ๆŒ‡ใ›ใฐๆ‰‹็•ชใฎ็›ธๆ‰‹ใ‚’่ฉฐใ‚ใ•ใ›ใ‚‰ใ‚Œใ‚‹ใฎใง)ใ€‚ใใฎใ‚ˆใ†ใช $i+1$ ใฎๆ‰‹็•ชใŒใชใ‘ใ‚Œใฐ $\lnot P_i$ ๅฟ…ๅ‹ใงใ‚ใ‚‹(ๆ‰‹็•ชใฎ่€…ใŒ่ฉฐใ‚“ใงใ„ใ‚‹ใฎใง)ใ€‚
  • 9ๆ‰‹็›ฎใง็ธฆๆจชๆ–œใ‚ใซ่‰ฒใŒใใ‚ใ‚ใชใ‘ใ‚Œใฐใ‚นใ‚ณใ‚ขใฎๅคงๅฐใงๅ‹ใก่ฒ ใ‘ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใƒžใ‚นใฎๆ•ฐๅญ—ใฎๅ’Œใฏๅฅ‡ๆ•ฐใชใฎใงใ€ๅผ•ใๅˆ†ใ‘ใฏ็„กใๅ‹ๆ•—ใŒไป˜ใใ€‚

ๆ•ฐmsecใง็ต‚ใ‚ใ‚‹ใฎใงๅฎšๆ•ฐๅ€ๆœ€้ฉๅŒ–ใ‚’ใ—ใŸใฎใŒใใ‚‚ใใ‚‚ใฎ้–“้•ใ„ใงใ‚ใฃใŸใจใ„ใˆใ‚‹ใ€‚ๅ†ๅธฐๆทฑๅบฆใ€ใƒžใ‚นๆ•ฐใ€้ †ๅˆ—ใง $9 \times 9 \times 9!$ ใฎใƒซใƒผใƒ—ใŒ้‡ใใฆTLEใ—ใŸใ‚‰ๅ›ฐใ‚‹ใจๆ€ใฃใŸใฎใ ใŒใ€็ตๆžœ็š„ใซใฏC++ใฎ้€ŸๅบฆใงๆŠผใ›ใŸใฎใงใ€ๆ—ฉใ™ใŽใ‚‹ๆœ€้ฉๅŒ–ใฏ่ซธๆ‚ชใฎๆ นๆบใจ่จ€ใˆใ‚‹ใ€‚

ABC 350-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ26ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใ‚’36ๅˆ†10็ง’ใƒšใƒŠใƒซใƒ†ใ‚ฃ็„กใ—ใฏ่‡ชๅทฑๆœ€้€Ÿใงใ€ใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚’ๆฐด่‰ฒใซๆˆปใ—ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไธ€ๅ•็›ฎใ‹ใ‚‰ใ‚จใƒƒใ‚ธใ‚ฑใƒผใ‚นใŒๅŽณใ—ใ„ใŒใ€ใ„ใคใ‚‚็ซ‹ใกไธŠใŒใ‚ŠใŒ้…ใๆ…Ž้‡ใ ใฃใŸใฎใงใ€ใƒšใƒŠใƒซใƒ†ใ‚ฃ็„กใ—ใงๅˆ‡ใ‚ŠๆŠœใ‘ใŸใ€‚1ใƒšใƒŠใ‚‚ใ‚‰ใ†ใใ‚‰ใ„ใชใ‚‰ใ€3ๅˆ†26็ง’ๆŽ›ใ‹ใ‚‹ใปใ†ใŒใพใ—ใงใ‚ใ‚‹ใ€‚

3ๆกใฎๆ•ฐๅญ—ใ‚’ๆ•ฐๅ€คใซๅค‰ๆ›ใ™ใ‚‹ใฎใซๆณฅ่‡ญใๆ›ธใไธ‹ใ—ใฆใ—ใพใฃใŸใŒใ€ใ‚‚ใฃใจ็ฐกๅ˜ใซ ๆ›ธใ‘ใŸ ใ€‚ใใ‚Œใซใ—ใฆใ‚‚ c1 ใงใฏใชใ c5 ใจๆ›ธใ„ใŸใจใ“ใ‚ใŒใ€็„ฆใ‚ŠใŒๆ„Ÿใ˜ใ‚‰ใ‚Œใฆ็”Ÿใ€…ใ—ใ„ใ€‚

Num c100 = s.at(3) - '0';
Num c10 = s.at(4) - '0';
Num c5 = s.at(5) - '0';
Num c = c100 * 100 + c10 * 10 + c5;
const auto c = std::atoi(s.substr(3).c_str());

ABC 350-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

XORใ ใจๆ€ใฃใŸใ‚‰ใใ†ใ ใฃใŸใ€‚ $N,Q,T$ ใฎใƒซใƒผใƒ—ๅ›žๆ•ฐใ‚„ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใ‚’้–“้•ใˆใŸใŒใ€segmentation faultใซๆ•‘ใ‚ใ‚ŒใŸใ€‚

Aๅ•้กŒใจๅŒๆง˜ใซ็ซ‹ใกไธŠใŒใ‚ŠใŒๆ‚ชใใ€boolใฎๅ่ปขใ‚’ใฉๅฟ˜ใ‚Œใ—ใŸใ€‚ ~ ใ ใ‹ ! ใ ใ‹ ^ ใ ใ‹ๅˆ†ใ‹ใ‚‰ใชใใชใฃใฆใ€ไธ‰้ …ๆผ”็ฎ—ๅญใงๆ›ธใ„ใฆใ—ใพใฃใŸใ€‚ๆญฃใ—ใใฏ ใ“ใ† ๆ›ธใใ€‚

ns.at(t) = b ? false : true;
ns.at(t) = !ns.at(t);

ABC 350-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไฝ็ฝฎ $i=1..N$ ใซใฉใฎๅ€คใŒใ‚ใ‚‹ใ‹ $A_i$ ใจใ€ๆ•ฐๅ€ค $i=1..N$ ใŒใฉใฎไฝ็ฝฎใซใ‚ใ‚‹ใ‹ $P_i$ ใ‚’ใƒ™ใ‚ฏใ‚ฟใจใ—ใฆๆŒใคใ€‚ $i=1..N$ ใคใ„ใฆๅฎšไฝ็ฝฎใซใใ‚ใˆใ‚‹ใ€‚

  • $A_i = i$ ใชใ‚‰ใ€ใ™ใงใซๅฎšไฝ็ฝฎใชใฎใงไฝ•ใ‚‚ใ—ใชใ„
  • ใใ†ใงใชใ‘ใ‚Œใฐ $i$ ใจ $v = A_i$ ใจไบคๆ›ใ™ใ‚‹ใ€‚ $i$ ใฏ $p = P_i$ ใซใ‚ใ‚Šใ€ $v$ ใฏ $P_v = i$ ใซใ‚ใ‚‹ใฎใงใ€ $A_i = i, A_p = v, P_i = i, P_v = p$ ใจใ™ใ‚‹ใ€‚ใ“ใ“ใง $i, p$ ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

1ๅ›žใฎๆ“ไฝœใง $A$ ใฏๅ…ƒใ€…ๅฎšไฝ็ฝฎใ‹ใใ†ใงใชใ‘ใ‚Œใฐ1,2ใ‹ๆ‰€ใŒๅฎšไฝ็ฝฎใซใชใ‚‹ใฎใงใ€ $N-1$ ็ฎ‡ๆ‰€ใ‚’ๅฎšไฝ็ฝฎใซใ™ใ‚Œใฐๆฎ‹ใ‚Šใฎ1ๅ€‹ใ‚‚ๅฎšไฝ็ฝฎใซใชใ‚Š้กŒๆ„ใ‚’ๆบ€ใŸใ™ใ€‚

ABC 350-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Dๅ•้กŒใ‚’9ๅˆ†7็ง’ใง่งฃใ‘ใ‚‹ใจใฏๆ€ใ‚ใชใ‹ใฃใŸใ€‚E,Fๅ•้กŒใ‚’ใกใ‚‰ใฃใจ่ฆ‹ใ‚‹ๆ™‚้–“่พผใฟใงใ‚ใ‚‹ใ€‚

ๅ‹้”้–ขไฟ‚ $X,Y$ ใ‚’ใ‚ฐใƒฉใƒ•ใฎๆžใจใ™ใ‚‹ใ€‚ๆ“ไฝœๅพŒใซ $X,Y,Z$ ใฏๆŽจ็งปๅ‰‡ใ‚’ๆบ€ใŸใ™ใฎใงใ€้›†ๅˆ $S \subseteq {1..N}$ ใŒ $|S| \geq 3$ ใ‹ใค้€ฃ็ตใงใ‚ใ‚Œใฐใ€ๆŽจ็งปๅ‰‡ใ‹ใ‚‰ๅ…จๅ“กใ‚’ๅ‹้”ๅŒๅฃซใซใงใใ‚‹ใ€‚

$|S| \geq 3$ ใฎ้€ฃ็ตๆˆๅˆ†ใซใคใ„ใฆใ€ๆ“ไฝœใŒ็ต‚ใ‚ใฃใŸใจใใฎๆœ€็ต‚็š„ใชๅ‹้”้–ขไฟ‚ใฏ $|S| \times (|S| - 1) / 2$ ใงใ‚ใ‚‹ใ€‚ๅ…ƒใ€…ใ‚ใฃใŸๅ‹้”้–ขไฟ‚ใฏ $S$ ใซๅซใพใ‚Œใ‚‹ๅ‹้”้–ขไฟ‚ใฎๆ•ฐใชใฎใงใ€ใใฎๅทฎใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅ˜ใซ $|S|$ ใฎๅ’Œใ‹ใ‚‰ $M$ ใ‚’ๅผ•ใใจใ€ $|S| &lt; 3$ ใฎๆžใ‚’ๅผ•ใ„ใฆใ—ใพใ†ใฎใง่ชค็ญ”ใซใชใ‚‹ใ€‚ใจๆ€ใฃใฆใ„ใŸใฎใ ใŒใ‚ˆใ่€ƒใˆใŸใ‚‰ใ€ $|S| = 2$ ใชใ‚‰ๆžใฏ1ๆœฌใ—ใ‹ใชใใ“ใ‚ŒใŒๅ…จใฆใงใ‚ใ‚Šใ€ $|S| = 1$ ใชใ‚‰ๆžใฏ็„กใ„ใฎใงใ€ใใ‚‚ใใ‚‚ๅ ดๅˆๅˆ†ใ‘่‡ชไฝ“ใŒ ่ฆใ‚‰ใชใ‹ใฃใŸ ใ€‚

ABC 350-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใพใ•ใ‹Eๅ•้กŒใ‚’11ๅˆ†21็ง’ใง่งฃใ‘ใ‚‹ใจใฏๆ€ใ‚ใชใ‹ใฃใŸใ€‚

ๆ™ฎ้€šใซใƒกใƒขๅŒ–ๅ†ๅธฐ็ขบ็އDPใงใ‚ใ‚‹ใ€‚ๅ…ˆ้€ฑใฏใ‚ฒใƒผใƒ ๆœจใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใ ใ‘ใจ่งฃใฃใฆใ„ใŸใฎใซใƒ‡ใƒใƒƒใ‚ฐใŒ็ต‚ใ‚ใ‚‰ใชใ‹ใฃใŸใŒใ€ไปŠๅ›žใฏไธ€็ญ†ๆ›ธใใงACใ—ใŸใ€‚

ๆ•ดๆ•ฐ $v$ ใฎใ‚ณใ‚นใƒˆใ‚’ใƒกใƒขๅŒ–ใ—ใฆ $DP[v]$ ใจใŠใใ€ๅ†ๅธฐใงๆฑ‚ใ‚ใ‚‹ใ€‚

  • $v = 0$ ใชใ‚‰ใ‚ณใ‚นใƒˆใฏ0ใงใ‚ใ‚‹
  • ใ™ใงใซใ‚ณใ‚นใƒˆ $DP[v]$ ใ‚’ๆฑ‚ใ‚ใฆใ„ใŸใ‚‰ใƒกใƒขใ—ใŸๅ€คใ‚’่ฟ”ใ™

ๅ†ๅธฐไธญใฎใƒŽใƒผใƒ‰ $v$ ใงใฏใ€ไปฅไธ‹ใฎ2ใคใฎๆ“ไฝœใฎใ†ใกใ‚ณใ‚นใƒˆใŒๅฎ‰ใ„ๆ–นใ‚’่ฟ”ใ›ใฐใ„ใ„ใ€‚ใ‚ตใ‚คใ‚ณใƒญใฎ็›ฎใŒ1ใฎใจใใ‚’ๆถˆๅŽปใ—ใฆใ€ $Y$ ใ‚’ $6/5$ ๅ€ใ™ใ‚‹ใ€‚ใ“ใฎ็ตๆžœใ‚’ใƒกใƒขใ™ใ‚‹ใ€‚

  • $X + DP[\lfloor v/A \rfloor]$
  • $6/5 \times Y + 1/5 \times \sum_{i=2..6} DP[ \lfloor v/i \rfloor]$

$DP[N]$ ใ‚’ใƒˆใƒƒใƒ—ใƒ€ใ‚ฆใƒณใซๆฑ‚ใ‚ใŸๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ2ใซใ‚ใ‚‹ใจใใ€ๆ“ไฝœ2ใŒๆœ€้ฉใชใ‚‰ใ€ๆ“ไฝœ2ใง1ใฎ็›ฎใŒๅ‡บใŸๅพŒใซๆ“ไฝœ1ใซไน—ใ‚Šๆ›ใˆใ‚‹ใ“ใจใฏใ‚ใ‚Šๅพ—ใชใ„ใจใ„ใ†ใฎใŒ้‡่ฆใงใ‚ใ‚‹ใ€‚ใชใœใชใ‚‰ใ‚ตใ‚คใ‚ณใƒญใง1ใฎ็›ฎใŒๅ‡บใฆ $Y$ ๆ‰•ใฃใŸใจใ—ใฆใ‚‚ใใ‚Œใฏใ‚ตใƒณใ‚ฏใ‚ณใ‚นใƒˆ=้ŽๅŽปใฎๆ”ฏๆ‰•ใ„ใฏๅฐ†ๆฅใฉใฎใ‚ˆใ†ใช่กŒๅ‹•ใ‚’ๅ–ใ‚‹ในใใ‹ใซไธ€ๅˆ‡ๅฝฑ้Ÿฟใ‚’ไธŽใˆใชใ„ใ‹ใ‚‰ใ ใ€‚

ABC 350-F

ๆฎ‹ใ‚Š63ๅˆ†ใ‚ใฃใŸใŒ่งฃๆณ•ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚็ฏ„ๅ›ฒใ‚’ใ„ใ„ๆ„Ÿใ˜ใซใ‚นใ‚ฟใƒƒใ‚ฏใซ็ฉใ‚€ใ‹ใ€้…ๅปถใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ไฝฟใ†ใ‹ใ€ใฉใกใ‚‰ใฎ่งฃๆณ•ใ‚‚ๆฑบใ‚ๆ‰‹ใ‚’ๆฌ ใ„ใŸใพใพ้…ๅปถใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’้ธใ‚“ใ ใŒใ‚„ใฏใ‚Š่งฃใใ“ใจใฏใงใใชใ‹ใฃใŸใ€‚

ๅ…ฌๅผ่งฃ่ชฌ1ใซๅŸบใฅใๅฎŸ่ฃ…ใฏ ใ“ใกใ‚‰ ใ€‚ใ‚นใ‚ฟใƒƒใ‚ฏใงใฏใชใๅ†ๅธฐใ€็ฏ„ๅ›ฒใ‚’ๆฑ‚ใ‚ใ‚‹ใฎใงใฏใชใๆ–‡ๅญ—ใ‚’้€ๆฌกๅ‡บๅŠ›ใ™ใ‚‹ใ“ใจใ‚’ๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใฏใ•ใ‚‰ใซ็ฐกๆฝ”ใง ใ“ใ† ๅฎŸ่ฃ…ใงใใ‚‹ใ€‚

ใฉใ†ใ—ใฆใ‚‚ใ“ใ‚Œใ‚‰ใฎ่งฃๆณ•ใ‚’ๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใ€‚็งใซFๅ•้กŒใฏๅŽณใ—ใ„ใจใ„ใ†ๆ€ใ„่พผใฟใ‹ใ‚‰ใ‹(ใ‚ฎใƒชใ‚ฎใƒช้’diffใ ใฃใŸ)ใ€ๅ‰ๅ›žๅ‰ใ€…ๅ›žใŒๆฅตๅบฆใฎ็ทŠๅผตใงใƒ‡ใƒใƒƒใ‚ฐใŒ้€ฒใพใชใ‹ใฃใŸใฎใงไปŠๆ—ฅใฏๅฐ‘ใ—ใ‚†ใ‚‹ใใ‚„ใ‚ใ†ใจๆ€ใฃใŸใฎใ‹ใ€ไปŠๅ›žใฏใฒใฉใ„ใ“ใจใซใฏใชใ‚‰ใชใ‹ใฃใŸใ—5ๅฎŒใงใพใ‚ใพใ‚ใฎ้ †ไฝใ ใฃใŸใฎใงFๅ•้กŒใฎ่งฃ็ญ”่€…ๆ•ฐๆฌก็ฌฌใจใฏใ„ใˆใŸใถใ‚“ๆฐด่‰ฒใซๆˆปใ‚Œใ‚‹ใจๆ€ใฃใŸใ‹ใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆ€ใ†ใจใ“ใ‚ใฏ่‰ฒใ€…ใ‚ใฃใŸใŒๅ˜ใซๆดžๅฏŸๅŠ›ใŒ่ถณใ‚Šใชใ„ใ ใ‘ใ ใฃใŸใ€‚

ABC 351-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ27ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซA,B,C,Dใฎ4ๅฎŒใ€ใใฎ็›ดๅพŒใซE,Fใ‚’่‡ชๅŠ›ACใ—ใŸใ€‚Dๅ•้กŒใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใฆใ€E,Fๅ•้กŒใ‚’่งฃใๆ™‚้–“ใŒ็„กใ‹ใฃใŸใ€‚ๅ•้กŒ้ธใณใŒไธ‹ๆ‰‹ใจใ„ใ†ใ‚ˆใ‚Šใ€Dๅ•้กŒใฎใƒ‡ใƒใƒƒใ‚ฐใŒไธ‹ๆ‰‹ใ™ใŽใ‚‹ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅˆถ็ด„ใ‚ˆใ‚Šใ€ $S_a = \sum A \geq \sum B = S_b$ ใงใ‚ใ‚‹ใ€‚ ใ‚ˆใฃใฆ็ญ”ใˆใฏ $S_a - S_b + 1$ ใงใ‚ใ‚‹ใ€‚

ABC 351-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ™ในใฆใฎใƒžใ‚นใ‚’่ชฟในใฆใ€ๆ–‡ๅญ—ใŒ็•ฐใชใ‚‹ๅ ดๆ‰€ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ABC 351-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ˆใ่€ƒใˆใŸใ‚‰ใ€ใƒœใƒผใƒซใฎๅคงใใ•ใฏ2ใฎ็ดฏไน—ใชใฎใงใ€2ใคใฎใƒœใƒผใƒซใ‚’่ถณใ—ใฆใ‚‚ใ‚„ใฏใ‚Šใƒœใƒผใƒซใฎๅคงใใ•ใฏ2ใฎ็ดฏไน—ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใซๆฐ—ใŒไป˜ใ‹ใšไปฅไธ‹ใฎ่งฃใ‚’ๆ›ธใ„ใฆใ—ใพใ„ใ€TLEใ™ใ‚‹ใฎใงใฏใชใ„ใ‹ใจ็„ฆใฃใŸใ€‚

$2^{A_i}$ ใฎๅ’Œใ‚’ๆ•ฐๅ€คใจใ—ใฆ็ฎก็†ใ™ใ‚‹ใจๅคงใใ™ใŽใ‚‹ใฎใงใ€ใฉใฎใƒ“ใƒƒใƒˆใŒ็ซ‹ใฃใฆใ„ใ‚‹ใ‹ใ ใ‘้›†ๅˆ $S$ ใง็ฎก็†ใ™ใ‚‹ใ€‚ใคใพใ‚Šใƒœใƒผใƒซใฎ $i$ ใƒ“ใƒƒใƒˆ็›ฎ(LSBใฏ $i=0$ )ใŒ็ซ‹ใฃใฆใ„ใฆใ€ใ‚ทใƒ•ใƒˆๅ€คๅ…จไฝ“ใ‚’ $2^j$ ใ™ใ‚‹ใ“ใจใ‚’ใ€ $(i \in S, j)$ ใง็ฎก็†ใ— std::pair<std::set<Num>, Num> ใงๆŒใคใ€‚ๅ„ๆ“ไฝœใฏไปฅไธ‹ใฎ้€šใ‚Šๅฏพๅฟœใ™ใ‚‹ใ€‚

  1. ใƒœใƒผใƒซ $({ A_i } , 0)$ ใ‚’่ฟฝๅŠ ใ™ใ‚‹ใ€‚
  2. 2ใคใฎใƒœใƒผใƒซใฎ็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใŒ็ญ‰ไพกใงใ‚ใ‚‹ใ“ใจใ‚’่ชฟในใ‚‹ใ€‚ใคใพใ‚Šใƒœใƒผใƒซ $A = ( { A_1, A_2, ... } , S_A)$ ใฎใจใใ€ใƒ“ใƒƒใƒˆ ${ A_1 + S_A, A_2 + S_A, ... }$ ใŒ็ซ‹ใฃใฆใ„ใ‚‹ใ€‚ๅŒๆง˜ใซใƒœใƒผใƒซ $B = ( { B_1, B_2, ... } , S_B)$ ใฎใจใใ€ใƒ“ใƒƒใƒˆ ${ B_1 + S_B, B_2 + S_B, ... }$ ใŒ็ซ‹ใฃใฆใ„ใ‚‹ใ€‚ไธก่€…ใŒไธ€่‡ดใ™ใ‚‹ใ“ใจใ‚’็ขบ่ชใ™ใ‚‹ใ€‚
  3. 2ใคใฎใƒœใƒผใƒซใฎ็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใŒ็ญ‰ไพกใชใ‚‰ใ€ใƒœใƒผใƒซ $B$ ใ‚’ๅ‰Š้™คใ—ใฆใ€ใƒœใƒผใƒซ $A$ ใฎใ‚ทใƒ•ใƒˆๅ€คใ‚’ $S_A$ ใ‚’1่ถณใ™

ไธ€่ˆฌ่งฃใจใ—ใฆใฏใ“ใ‚Œใงใ‚ใฃใฆใ„ใ‚‹ใฎใ ใŒใ€ใใ‚‚ใใ‚‚ใƒœใƒผใƒซใฏ2ใฎในใไน—ใคใพใ‚Š็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใฏๆญฃ็ขบใซ1ๅ€‹ใชใฎใงใ€ใ‚‚ใฃใจ็ฐกๅ˜ใชใƒ‡ใƒผใ‚ฟๆง‹้€ ใจใ—ใฆใ€็ซ‹ใฃใฆใ„ใ‚‹ใƒ“ใƒƒใƒˆใ‚’ใ ใ‘1ๅ€‹็ฎก็†ใ™ใ‚Œใฐใ‚ˆใ‹ใฃใŸใ€‚ใ“ใ† ๅฎŸ่ฃ… ใ™ใ‚‹ใ€‚

ABC 351-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Dๅ•้กŒใฎใƒ‡ใƒใƒƒใ‚ฐใซ63ๅˆ†36็ง’ๆŽ›ใ‹ใฃใŸใ€‚Eๅ•้กŒใซ27ๅˆ†29็ง’ใ€Fๅ•้กŒใซ34ๅˆ†51็ง’ใชใฎใงใ€Dๅ•้กŒใ‚’ๆจใฆใฆEๅ•้กŒใจFๅ•้กŒใ‚’่งฃใ„ใŸๆ–นใŒ้ซ˜ๅพ—็‚นใง้ซ˜ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ ใฃใŸใ€‚ๅ•้กŒ้ธใณใ‚’้–“้•ใˆใŸใจใ„ใ†ใ‚ˆใ‚Šใ€Dๅ•้กŒใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใงใ‚ใ‚‹ใ€‚

ๆ™ฎ้€šใซBFSใง่งฃใ‘ใ‚‹ใฏใšใ ใฃใŸใฎใ ใŒใ„ใคใพใง็ตŒใฃใฆใ‚‚ใƒ‡ใƒใƒƒใ‚ฐใŒ็ต‚ใ‚ใ‚‰ใชใ„ใ€ใจใ„ใ†ใ‹ๅ…ฅๅŠ›ไพ‹ใ—ใ‹้€šใ‚‰ใชใ‹ใฃใŸใฎใงใƒšใƒŠใƒซใƒ†ใ‚ฃใฎๅฑฑใ‚’็ฏ‰ใ„ใŸใ€‚

ๆ”นใ‚ใฆไธ€ใ‹ใ‚‰ ่งฃใ็›ดใ—ใฆ ่งฃๆณ•ใ‚’่ฟฝใฃใฆใฟใ‚‹ใ€‚ใพใš็ญ”ใˆใฎๆœ€ไฝŽๅ€คใฏ1ใงใ‚ใ‚‹(็ฃ็Ÿณใฎ็ฝฎใ‹ใ‚Œใฆใ„ใชใ„ใƒžใ‚นใŒๅฐ‘ใชใใจใ‚‚1ใคๅญ˜ๅœจใ™ใ‚‹ใฎใง)ใ€‚ใใฎไธŠใงใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใชใ„ใƒžใ‚นใ‚’ๆฑ‚ใ‚ใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใชใ„ใƒžใ‚นใ‚’ไธŠไธ‹ๅทฆๅณใซ้€ฃ็ตๅฏ่ƒฝใชใ‚‰union-findๆœจใง้€ฃ็ตใ™ใ‚‹ใ€‚

็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใชใ„ใƒžใ‚นใŒ้€ฃ็ตใ—ใฆ้›†ๅˆ $S$ ใ‚’ๆˆใ™ใชใ‚‰ใ€ใฉใ‚Œใ‹ไธ€ใ‹ๆ‰€ใฎใƒžใ‚นใ‹ใ‚‰BFSใ—ใฆใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใฆๆญขใพใ‚‹ใพใงๆŽข็ดขใ‚’็ถšใ‘ใ‚‹ใ€‚ใ‚ใ‚‹้›†ๅˆใซใคใ„ใฆใฎ่‡ช็”ฑๅบฆใจใฏใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใชใ„ใƒžใ‚นใฎๆ•ฐ $|S|$ ใจใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใ‚‹ใƒžใ‚นใฎๆ•ฐ $|T|$ ใฎๅ’Œใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’้€ฃ็ตๆˆๅˆ†ใ”ใจใซๆฑ‚ใ‚ใฆใใฎๆœ€ๅคงๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

BFSใซใŠใ„ใฆใ€็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใฆๆญขใพใ‚‹ใƒžใ‚นใพใงใฎ็ตŒ่ทฏใŒ่ค‡ๆ•ฐใ‚ใ‚Šใˆใ‚‹ใฎใงใ€้‡่ค‡ใ—ใฆๆ•ฐใˆใชใ„ใ‚ˆใ†ใซใ™ใ‚‹ใ€‚ใŠใใ‚‰ใใ“ใฎๅ‡ฆ็†ใ‚’้–“้•ใˆใŸใŸใ‚ใซใ€ๅ…ฅๅŠ›ไพ‹ใฏ้€šใฃใฆใ‚‚WAใซใชใฃใฆใ—ใพใฃใŸใจๆ€ใ‚ใ‚Œใ‚‹ใ€‚TLEใŒๆ€–ใ„ใฎใ ใŒใ€ๅ˜ใซ็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใฆๆญขใพใ‚‹ใƒžใ‚นใ‚’้›†ๅˆ std::set<Num> ใซใพใจใ‚ใฆใ€ std::set<Num>::size() ใ—ใŸใ‚‰ACใ—ใŸใ€‚ใ“ใฎๅ›ž้ฟ็ญ–ใ‚’ๆ€ใ„ใคใใพใง1ๆ™‚้–“ๆŽ›ใ‹ใฃใฆใ—ใพใ„ใ€E,Fๅ•้กŒใ‚’่งฃใๆ™‚้–“ใŒ็„กใใชใฃใฆใ—ใพใฃใŸใ€‚TLEใ—ใชใ„ใ“ใจใฏใ€ๅ…ฌๅผ่งฃ่ชฌ1ใซ่ชฌๆ˜ŽใŒใ‚ใ‚‹ใŒใ€็ฐกๅ˜ใซ่จ€ใˆใฐ็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใฆๆญขใพใ‚‹ใƒžใ‚นใซใฏไธ‰ๆ–นๅ‘ใ‹ใ‚‰ใ—ใ‹ๅฏ„ใ‚‰ใชใ„ใฎใงๆœ€ๅคงๆŽข็ดขๅ›žๆ•ฐใŒ $O(HW)$ ใซๅŽใพใ‚‹ใจใ„ใ†ใ“ใจใงใ‚ใ‚‹ใ€‚้‡่ค‡็ฎก็†ใฎใƒ‡ใƒใƒƒใ‚ฐใงใ—ใใ˜ใฃใŸใŒใ€C++ใชใ‚‰ set ใง $N log(N)$ ใ‚‚่จฑใ•ใ‚Œใ‚‹ใ€‚

Union-findๆœจใ‚’็”จใ„ใŸ่งฃๆณ•ใฏๅ…ฌๅผ่งฃ่ชฌ2ใจๅŒใ˜ใงใ‚ใ‚‹ใ€‚ๆœ€ๅˆใ‹ใ‚‰ๆ€ใ„ใคใ„ใฆใ„ใ‚Œใฐใ€Fๅ•้กŒใ‚’่งฃใๆ™‚้–“ใŒใ‚ใฃใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹้€šใ‚Šใ€Union-findๆœจใ‚’ไฝฟใ†ใชใ‚‰BFSใ™ใ‚‹ๅฟ…่ฆใฏใชใใ€Union-findๆœจใฎๅ‘จใ‚Šใ ใ‘็ฃ็Ÿณใซๅผ•ใ‹ใ‚Œใฆๆญขใพใ‚‹ใƒžใ‚นใ‹ใฉใ†ใ‹ๆŽข็ดขใ™ใ‚Œใฐใ‚ˆใ„ใ€‚ๅฎŸ่ฃ…ใฏ ใ“ใกใ‚‰ ใ€‚

ABC 351-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Fๅ•้กŒใŒ้‡่ฆใชใƒ’ใƒณใƒˆใซใชใฃใฆใ„ใ‚‹ใ€‚

ๆ–œใ‚45ๅบฆๅ›ž่ปขใ—ใŸๅบงๆจ™็ณป $(x+y, x-y)$ ใ‚’่€ƒใˆใ‚‹ใ€‚ใ“ใฎๅบงๆจ™็ณปใฏใ€ $x+y$ ใŒๅถๆ•ฐใจๅฅ‡ๆ•ฐใงๅˆ†ใ‹ใ‚Œใ€ไบ’ใ„ใซ่กŒใๆฅใงใใชใ„ใ€‚ใ‚ˆใฃใฆๅถๆ•ฐ็ณปใจๅฅ‡ๆ•ฐ็ณปใงๅˆฅใ€…ใซ็ญ”ใˆใ‚’ๆฑ‚ใ‚ใฆใ€่ถณใ—ใŸใ‚‚ใฎใŒๆœ€็ต‚็š„ใช็ญ”ใˆใงใ‚ใ‚‹ใ€‚

$x+y$ ใŒๅถๆ•ฐใฎๅ ดๅˆใ€ใ‚ธใƒฃใƒณใƒ—ไธ€ๅ›žใง $x+y$ ใฎ็ตถๅฏพๅ€คใ‚’ $-2,0,2$ ๅค‰ๆ›ดใ™ใ‚‹ใ“ใจใŒใงใใ‚‹ใ€‚ใ‚ˆใฃใฆ $((x+y) / 2, (x-y) / 2)$ ใซใคใ„ใฆใฎใƒžใƒณใƒใƒƒใ‚ฟใƒณ่ท้›ขใ‚’่€ƒใˆใ‚‹ใ€‚ใ“ใฎใจใ $N$ ็‚นใฎ็ทๅฝ“ใŸใ‚Šใ‚’ใ™ใ‚‹ใจTLEใ™ใ‚‹ใฎใงใ€351-FใจๅŒๆง˜ใซๅบงๆจ™ๅœง็ธฎใ—ใฆใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใ‚‹ใ€‚

้‡่ฆใช็‚นใจใ—ใฆใ€่ท้›ขใฎๅ’Œใ‚’ๅ–ใ‚‹ใฎใ ใ‹ใ‚‰ $x+y$ ใฎ่ท้›ขใฎๅ’Œใจ $x-y$ ใฎ่ท้›ขใฎๅ’Œใฏๅˆฅใ€…ใซๆฑ‚ใ‚ใฆๆง‹ใ‚ใชใ„ใ€‚ใคใพใ‚Šไธกๅบงๆจ™่ปธใซใคใ„ใฆใ€ๅ…ƒใฎ็‚นใฎๅบงๆจ™ $(X,Y)$ ๅฏพใ‚’็„ก่ฆ–ใ—ใฆใ‚ฝใƒผใƒˆใ—ใฆใ‹ใ‚‰่ถณใ—ใฆๆง‹ใ‚ใชใ„ใ€‚ $x+y$ ใซใคใ„ใฆไปฅไธ‹ใฎใ‚ˆใ†ใซใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใ‚‹ใŒใ€ $x-y$ ใซใคใ„ใฆใ‚‚ๅฅ‡ๆ•ฐ็ณปใซใคใ„ใฆใ‚‚ๅŒๆง˜ใงใ‚ใ‚‹ใ€‚

  • $A = {A_i = X_i + Y_i : i = 1..N }$ ใ‚’ใ‚ฝใƒผใƒˆใ—ใ€ $A$ ใฎใ†ใกๆœ€ใ‚‚ๅฐใ•ใ„ๅ€คใงๅผ•ใ„ใฆๅŽŸ็‚นใ‚’0ใซใ™ใ‚‹
  • $A$ ใ‚’ๅบงๆจ™ๅœง็ธฎใ—ใฆใ€้ซ˜ใ€… $N$ ๅ€‹ใฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใซไป˜ใ‘ๆ›ฟใˆใ‚‹ใ€‚
  • $A$ ใฎ้™้ †(ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎ้™้ †)ใซใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใ‚‹ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใจใ—ใฆใฏใ€ $A$ ใฎๅ€ค $Atree$ ใจใ€ $A$ ใฎๅ‡บ็พๅ›žๆ•ฐ $Ctree$ ใฎ2ๆœฌใ‚’็”จๆ„ใ™ใ‚‹ใ€‚
  • ่ผ‰ใ›ใŸๅพŒใฎๆ“ไฝœใฏใ€351-Fใฎ่งฃ่ชฌใ‚’ๅ‚็…ง

$x+y$ ใŒๅฅ‡ๆ•ฐใฎๅ ดๅˆใ€ $((x+y-1) / 2, (x-y-1) / 2)$ ใซใคใ„ใฆๅŒๆง˜ใซ็ญ”ใˆใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚้–ขๆ•ฐใซใพใจใ‚ใฆใŠใใจใ‚ˆใ„ใ€‚

ๆณจๆ„็‚นใจใ—ใฆใ€ $x+y$ ใŒๅถๆ•ฐ็ณปใจๅฅ‡ๆ•ฐ็ณปใฎใฉใกใ‚‰ใ‹ไธ€ๆ–นใ—ใ‹ใชใใ€ไป–ๆ–นใŒ็ฉบใฎๅ ดๅˆใŒใ‚ใ‚‹ใ€‚็ฉบใฎๅ ดๅˆใฏ่ท้›ขใฎๅ’Œใ‚’0ใซใ—ใชใ„ใจREใ™ใ‚‹ใ€‚

ๆ–น้‡ใฏๅ…ฌๅผ่งฃ่ชฌ้€šใ‚Šใงใ‚ใ‚‹ใ€‚ๅŽŸ็‚นใ‚’0ใซๅ„่ฆ็ด ใ‚’้ž่ฒ ใซใ—ใŸใฎใงใ€ๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹้€šใ‚Šใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ไฝฟใ†ใพใงใ‚‚ใชใ็ดฏ็ฉๅ’Œใง ๆฑ‚ใพใ‚‹ ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฎๅผๅฐŽๅ‡บใ‚’ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซ่กŒใ†ใฎใฏๅคงๅค‰ใ ใŒใ€ๅบงๆจ™ใฎๆœ€ๅฐๅ€คใ‚’0ใซใ‚ทใƒ•ใƒˆใ™ใ‚‹ใจๅ›ณๅฝข็š„ใซ็†่งฃใงใใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใฎๅผใฏใ€ $\sum_{i=1..N} (|E| + 1 - 2i) = (|E|-1) + ... + (-|E|+1) = 0$ ใ‹ใ‚‰ $\sum_{i=1..N} (|E| + 1 - 2i) x_{1}^{'} = 0$ ใชใฎใง $\sum_{i=1..N} (|E| + 1 - 2i)(x_{i}^{'} - x_{1}^{'}) = \sum_{i=1..N} (|E| + 1 - 2i)x_{i}^{'}$ ใงใ‚ใ‚‹ใ€‚

ABC 351-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

C,Dๅ•้กŒใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใ€ACใ—ใŸใฎใฏ11ๅˆ†3็ง’้…ใ‚Œ(22:51:03)ใงใ‚ใฃใŸใ€‚6ๅฎŒใฏใจใ‚‚ใ‹ใ5ๅฎŒใฏใ—ใŸใ‹ใฃใŸใ€‚

่ฒ ใฎๆ•ฐใ‚’่ถณใ•ใชใ„ๆ“ไฝœใ‚’ใ€0ใ‚’่ถณใ™ๆ“ไฝœใซ็ฝฎใๆ›ใˆใ‚Œใฐใ„ใ„ใ€‚ๅฆ‚ไฝ•ใซใ‚‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใฎๅ‡บ็•ชใงใ‚ใ‚‹ใ€‚

ๆœ€ๅˆใซ $A$ ใ‚’ๅบงๆจ™ๅœง็ธฎใ—ใฆใ€้ซ˜ใ€… $N$ ๅ€‹ใฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใซไป˜ใ‘ๆ›ฟใˆใ‚‹ใ€‚ $A$ ใฎ้™้ †(ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใฎ้™้ †)ใซใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใ‚‹ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใจใ—ใฆใฏใ€ $A$ ใฎๅ€ค $Atree$ ใจใ€ $A$ ใฎๅ‡บ็พๅ›žๆ•ฐ $Ctree$ ใฎ2ๆœฌใ‚’็”จๆ„ใ™ใ‚‹ใ€‚

  • ไปŠๆ“ไฝœใ—ใ‚ˆใ†ใจใ—ใฆใ„ใ‚‹ๅ€ค $A_p$ ใซใคใ„ใฆใ€ ๅœง็ธฎๅพŒใฎๅบงๆจ™ใ‚’ $I_p$ ใจใ™ใ‚‹
  • $A_p$ ใ‚ˆใ‚Šๅคงใใชๅ€คใฎๅ’Œใฏ $sum_p = Atree.prod(I_p+1, N)$ ใงใ‚ใ‚‹
  • $A_p$ ใ‚ˆใ‚Šๅคงใใชๅ€คใฎๅ€‹ๆ•ฐใฏ $count_p = Ctree.prod(I_p+1, N)$ ใงใ‚ใ‚‹
  • ๅ•้กŒๆ–‡ใฎๅ†…ๅดใฎ $\sum$ ใฎไธญใฏ $sum_p - count_p \times A_p$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’่งฃ $total$ ใซ่ถณใ™ใ€‚
  • $Atree[I_p]$ ใซ $A_p$ ใ‚’่ถณใ™ใ€‚ๅŒใ˜ๅบงๆจ™ใซ่ค‡ๆ•ฐใฎ $A$ ใŒใ‚ใ‚‹ๅ ดๅˆใซๅฏพๅฟœใ™ใ‚‹ใ€‚
  • $Ctree[I_p]$ ใซ1่ถณใ™ใ€‚ไธŠ่จ˜ใจๅŒๆง˜ใ€‚

ใ“ใ†ใ—ใฆๆฑ‚ใ‚ใŸ $total$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌ1ใฏ Fenwick Tree ใ‚’ไฝฟใฃใฆใ„ใ‚‹ใŒใ‚„ใฃใฆใ„ใ‚‹ใ“ใจใฏๅŒใ˜ใงใ‚ใ‚‹ใ€‚ๅนณ้ข่ตฐๆŸปใจๅ‘ผใถใ‚‰ใ—ใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ5ใฎใ‚ˆใ†ใซใ€ๅบงๆจ™ๅœง็ธฎใ‚’็„กใใ—ใฆ FenwickTree ใ‚’ไฝฟใ†ใจใ“ใ‚Œใ ใ‘ ็Ÿญใใชใ‚‹ ใ€‚10ๅˆ†ใง่งฃใใชใ‚‰ใ“ใ†ใ„ใ†ๅทฅๅคซใŒๅฟ…่ฆใงใ‚ใ‚‹ใ€‚

ABC 352-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ28ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใŒไธ‹ใŒใฃใŸใ€‚Dๅ•้กŒใพใง23ๅˆ†40็ง’ใฏใพใ‚ใพใ‚ๆ—ฉใ‹ใฃใŸใŒใ€ใใฎๅพŒEๅ•้กŒใ‚’76ๅˆ†ๆŽ›ใ‘ใฆ่งฃใ‘ใชใ‹ใฃใŸใ€‚Eๅ•้กŒใ‚’่งฃ่ชฌACใ™ใ‚‹ใ—ใ‹ใชใ‹ใฃใŸใฎใงใ€ไปฅไธ‹ใฎๆŒฏใ‚Š่ฟ”ใ‚Šใ‚‚ใ‚ใพใ‚Šๆ›ธใใ“ใจใŒ็„กใ„ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$X &lt; Z &lt; Y$ ใพใŸใฏ $X &gt; Z &gt; Y$ ใชใ‚‰ Yes ใ€ใใ†ใงใชใ‘ใ‚Œใฐ No ใงใ‚ใ‚‹ใ€‚

ABC 352-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

349-Cใ‚’ใ€ไปŠๅบฆใฏ $2 \times 10^{5}$ ใชใฎใงๅฐบๅ–ใ‚Šๆณ•ใงๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚

ABC 352-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้ ญใŒ่‚ฉใ‹ใ‚‰ๅ‡บใฆใ„ใ‚‹้ซ˜ใ•ใฎๅทฎๅˆ† $B_i - A_i = D_i \geq 0$ ใŒไธ€็•ชๅคงใใชๅทจไบบใ‚’ใ€ๆœ€ใ‚‚ไธŠใซ่ผ‰ใ›ใ‚Œใฐใ„ใ„ใ€‚ $D_i$ ใฎๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆใ€็ญ”ใˆใฏ $D_n + \sum_{i=1..N} A_i$ ใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌ้€šใ‚Šใ€ $\sum_{i=1..N} A_i$ ใฏใ‚ฝใƒผใƒˆ้ †ใซไพใ‚‰ใชใ„ใฎใงใ‚ฝใƒผใƒˆใ™ใ‚‹ๅฟ…่ฆใฏใชใ„ใ€‚

ABC 352-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡ใ‚’็†่งฃใ™ใ‚‹ใฎใŒๅคงๅค‰ใ ใฃใŸใ€‚่ฆใ™ใ‚‹ใซ ${ i..(i+K-1) } : i \in { 1..(N-K+1) }$ ใ‚’ๅ–ใ‚Šๅ‡บใ™ใ‚ˆใ† $i$ ใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใฆใ€ใ“ใ‚Œใ‚‰ใฎๆ•ฐๅˆ—ใ‚’ใฉใ“ใ‹ใ‚‰ๆŒใฃใฆใใ‚‹ใ‹่ชฟในใ‚Œใฐใ‚ˆใ„ใ€‚ใ“ใ‚Œใฏ้€†ๅผ•ใใƒ†ใƒผใƒ–ใƒซ $R_i[i] = P_i$ ใ‚’ไฝœใ‚Œใฐๅˆ†ใ‹ใ‚‹ใ€‚

$i$ ใซใคใ„ใฆ้›†ๅˆ $S = R_i[i..(i+K-1)]$ ใจใ—ใ€ $S$ ใฎๆœ€ๅคงๅ€คใจๆœ€ๅฐๅ€คใฎๅทฎใŒ็ญ”ใˆใฎๅ€™่ฃœใงใ‚ใ‚‹ใ€‚ $i$ ใ‚’1ๅข—ใ‚„ใ™ใ”ใจใซใ€ $S$ ใซ $R_i[i+K]$ ใ‚’ๅŠ ใˆใฆใ€ $S$ ใ‹ใ‚‰ $R_i$ ใ‚’้™คใใ€‚

ABC 352-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰ ใ€‚่งฃ่ชฌACใงใ‚ใ‚‹ใ€‚

ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใ‚’ๅŠน็އ็š„ใซๅฎŸ่กŒใ™ใ‚‹ใ€ใจใ„ใ†ใฎใฏๅˆ†ใ‹ใฃใŸใŒใ€ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใฎ้€”ไธญใงใงใใฆใ„ใ‚‹่ค‡ๆ•ฐใฎๆœ€ๅฐๅ…จๅŸŸ้ƒจๅˆ†ๆœจใ‚’ใฉใ†ใ‚„ใฃใฆใƒžใƒผใ‚ธใ™ใ‚‹ใ‹ใŒใ•ใฃใฑใ‚Šๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚’่‡ชๅˆ†ใฎ่จ€่‘‰ใง่จ€ใ„ๆ›ใˆใ‚‹ใ€‚

่พบ $A_{i,1}, A_{i,2}$ ใจ่พบ $A_{i,1}, A_{i,3}$ ใ‚’ใจใ‚‚ใซใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใงๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใŸใฎใชใ‚‰ใ€่พบ $A_{i,2}, A_{i,3}$ ใ‚’ๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚‹ใ“ใจใฏใงใใชใ„ใ€‚ใชใœใชใ‚‰้ ‚็‚น $A_{i,1}, A_{i,2}, A_{i,3}, A_{i,1}$ ใ‚’็›ดๆŽฅใŸใฉใ‚‹่พบใŒใƒซใƒผใƒ—ใ™ใ‚‹ใ‹ใ‚‰ใงใ‚ใ‚‹ใ€‚

่พบ $A_{i,1}, A_{i,2}$ ใ‚’ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใงๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ€่พบ $A_{i,1}, A_{i,3}$ ใ‚’ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใงๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚‹ใ“ใจใŒใงใใชใ‹ใฃใŸใฎใชใ‚‰ใ€่พบ $A_{i,2}, A_{i,3}$ ใ‚’ๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚‹ใ“ใจใฏใงใใชใ„ใ€‚ใชใœใชใ‚‰่พบ $A_{i,1}, A_{i,2}$ ใ‚’็ตใถใƒ‘ใ‚น $A_{i,1}, path, A_{i,2}$ ใŒใ™ใงใซๆœ€ๅฐๅ…จๅŸŸๆœจใซใ‚ใ‚‹ใฎใง่พบ $A_{i,1}, A_{i,2}$ ใ‚’ๅŠ ใˆใ‚‰ใ‚Œใชใ‹ใฃใŸใฎใ ใ‹ใ‚‰ใ€ $A_{i,1},path,A_{i,2},A_{i,3}, A_{i,1}$ ใŒใƒซใƒผใƒ—ใ™ใ‚‹ใ‹ใ‚‰ใงใ‚ใ‚‹ใ€‚

ๅŒๆง˜ใซ่พบ $A_{i,1}, A_{i,2}$ ใ‚’ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใงๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚‰ใ‚Œใชใ‹ใฃใŸๅ ดๅˆใซใคใ„ใฆใ‚‚ใ€ใ‚„ใฏใ‚Š่พบ $A_{i,2}, A_{i,3}$ ใ‚’ๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚‹ใ“ใจใฏใงใใชใ„ใ€‚

ไปฅไธŠใ‹ใ‚‰ใ€ $C_i$ ใฎๆ˜‡้ †ใซ $A_{i,1}$ ใจ $A_{i,2..N}$ ใ‚’็ตใถใใ‚Œใžใ‚Œใฎ่พบใ‚’ใ€ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใงๆœ€ๅฐๅ…จๅŸŸๆœจใซๅŠ ใˆใ‚Œใฐใ‚ˆใ„ใ€‚ใ“ใฎๅพŒใซ $A_{i,j=2..N}$ ใจ $A_{i,(j+1)..N}$ ใ‚’็ตใถ่พบใ‚’ๅŠ ใˆใ‚‹ใ“ใจใฏใงใใชใ„ใ‹ใ‚‰ใ ใ€‚ $A_{i}$ ใฏ้ †ไธๅŒใชใฎใงใ€ $A_{i,j}$ ใจ $A_{i,j+1}$ ใ‚’็ตใถใใ‚Œใžใ‚Œใฎ่พบใซใ—ใฆใ‚‚ ๆง‹ใ‚ใชใ„ ใ€‚

ๆ—ขใซใ‚ใ‚‹ๆœ€ๅฐๅ…จๅŸŸๆœจใซใ€้ ‚็‚น้›†ๅˆ $A_{i,1..N}$ ใ‚’ๅŠ ใˆใŸใ‚‰่พบใŒไฝ•ๆœฌๅข—ใˆใ‚‹ใ‹ใ€ใจใ„ใ†่€ƒๅฏŸใ‚’่กŒใฃใŸใ‚‰ใ€ๅ…ฅๅŠ›ไพ‹ใ ใ‘ใŒ้€šใฃใฆWAใŒๅคง้‡ใซๅ‡บใŸใ€‚ใ“ใฎๆ™‚็‚นใง่งฃๆณ•ใŒๆ นๆœฌ็š„ใซ้–“้•ใฃใฆใ„ใ‚‹ใจๆฐ—ใฅใในใใ ใฃใŸใ€‚ใ‚ฏใƒฉใ‚นใ‚ซใƒซๆณ•ใฏๆ—ขใซๆฑบใพใฃใฆใ„ใ‚‹ๆœ€ๅฐๅ…จๅŸŸๆœจใซ่พบใ‚’่ฟฝๅŠ ใ™ใ‚‹ใฎใงใ‚ใฃใฆใ€้ ‚็‚นใ‚’่ฟฝๅŠ ใ™ใ‚‹ใฎใงใฏใชใ„ใฎใ ใŒใ€ใ“ใฎๆ–น้‡ใŒๅฎŒๅ…จใซ้–“้•ใฃใฆใ„ใŸใ“ใจใซๆœ€ๅพŒใพใงๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใ€‚

ABC 353-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ29ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซA,B,C,Dๅ•้กŒใ‚’4ๅฎŒใ—ใ€ใใฎๅพŒEๅ•้กŒใ‚’่‡ชๅŠ›ACใ—ใŸใ€‚Eๅ•้กŒใฎ่งฃๆณ•ใฏไธ€ใคใงใฏใชใ„ใŒใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใฎใŒใใ‚„ใ—ใ„ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚ŠๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚

ABC 353-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Šใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใ™ใ‚‹ใ€‚ๅ…จใ‚ฐใƒซใƒผใƒ—ใ‚’ใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใซ่ช˜ๅฐŽใ—ใŸๅพŒใซใ‚นใ‚ฟใƒผใƒˆใ•ใ›ใ‚‹ใฎใ‚’ๅฟ˜ใ‚Œใชใ„ใ€‚

  1. ใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใฎ็ฉบใๅฎน้‡ใ‚’ $C := K$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹
  2. ใ‚ฐใƒซใƒผใƒ—ใฎไบบๆ•ฐใŒ $G$ ใŒ $G \leq C$ ใชใ‚‰ใ€ใใฎใ‚ฐใƒซใƒผใƒ—ใ‚’่ผ‰ใ›ใฆ $C := C - G$ ใซใ™ใ‚‹
  3. ใใ†ใงใชใใฆ $G &gt; C$ ใชใ‚‰ใ€ใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใ‚’ใ‚นใ‚ฟใƒผใƒˆใ•ใ›ใฆ(ใ‚นใ‚ฟใƒผใƒˆๅ›žๆ•ฐใ‚’1ๅข—ใ‚„ใ—ใฆ)ใ€ $C := K$ ใซใ™ใ‚‹ใ€‚ใ“ใฎๅพŒ2.ใซๆˆปใ‚‹ใ€‚
  4. ๅ…จใ‚ฐใƒซใƒผใƒ—ใ‚’่ผ‰ใ›ใŸๅพŒ $C \ne K$ ใชใ‚‰ใ€่ช˜ๅฐŽใ—ใŸใพใพใฎใ‚ฐใƒซใƒผใƒ—ใŒใพใ ๆฎ‹ใฃใฆใ„ใ‚‹ใฎใงใ€ใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใ‚’ใ‚นใ‚ฟใƒผใƒˆใ•ใ›ใ‚‹ใ€‚ใจใ„ใ†ใ‚ˆใ‚Šๆฎ‹ใฃใฆใ„ใ‚‹ใฏใšใงใ‚ใ‚‹(ใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใŒ็ฉบใฎใจใใซใ‚ขใƒˆใƒฉใ‚ฏใ‚ทใƒงใƒณใ‚’ใ‚นใ‚ฟใƒผใƒˆใ•ใ›ใชใ„ใฎใง)ใ€‚

ABC 353-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไธ€่ฆ‹ใ—ใฆ่งฃใ‘ใใ†ใซใชใ‹ใฃใŸใฎใงDๅ•้กŒใ‚’่งฃใใ€Eๅ•้กŒใ‚’20ๅˆ†ๆŽ›ใ‘ใฆ่งฃใ‘ใชใ‹ใฃใŸใฎใงCๅ•้กŒใ‚’่งฃใ„ใŸใ€‚Eๅ•้กŒใ‚’ๅพŒๅ›žใ—ใซใ™ใ‚Œใฐใใฎๅˆ†ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใŒไธŠใŒใฃใŸใ—ใ€ๅฑใ†ใC,Eๅ•้กŒใŒๅ…ฑๅ€’ใ‚Œใซ็ต‚ใ‚ใ‚‹ใจใ“ใ‚ใ ใฃใŸใ€‚C,Eๅ•้กŒใจใ‚‚ใซ้›ฃใ—ใ„ใฎใ ใŒใ€้›ฃๆ˜“ๅบฆใฎ่ฆ‹ๆฅตใ‚ใ‚‚ใพใŸ้›ฃใ—ใ‹ใฃใŸใ€‚

$A_i &lt; 10^8$ ใชใ‚‰ACLใฎFenwick treeใซ่ผ‰ใ‚‹ใ ใ‚ใ†ใจใ„ใ†ใ“ใจใงใ€ๅˆถ็ด„ใซๅŠฉใ‘ใ‚Œใ‚‰ใ‚ŒใŸใ€‚ๅˆถ็ด„ใŒๅคšใ‹ใฃใŸใ‚‰่‡ชไฝœใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซใ‚‚่ผ‰ใ‚‰ใชใใฆ่งฃใ‘ใชใ‹ใฃใŸใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚ๅฎŸ้š›ใƒกใƒขใƒชไฝฟ็”จ้‡ใŒMLEใŽใ‚ŠใŽใ‚Šใงใ‚ใ‚‹ใ€‚

$A_1, ... A_N$ ใ‚’้…ๅˆ—ใซไฟๅญ˜ใ—ใ€ไฝตใ›ใฆ $A_i$ ใŒ้‡่ค‡ใ‚’ๅซใ‚ใฆไฝ•ๅ€‹ใ‚ใ‚‹ใ‹ใ‚’Fenwick treeใซ่ผ‰ใ›ใ‚‹ใ€‚็ทๅ’Œ $S= \sum A_i$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

$A_i$ ใซใคใ„ใฆใ€็ทๅ’Œใ‹ใ‚‰่‡ช่บซใ‚’ๅผ•ใ„ใŸใ‚‚ใฎใซๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใคใพใ‚Š $S := S - A_i$ ใจใ™ใ‚‹ใ€‚ไฝตใ›ใฆFenwick tree ใ‹ใ‚‰ $A_i$ ใ‚’1ๅ€‹ๆธ›ใ‚‰ใ™ใ€‚ๆก็นฐไธŠใ‚Šใ‚’ $S_{ij} = ((A_i + A_j) \geq 10^8)$ ใจใ™ใ‚‹(็œŸ็†ๅ€คใ‚’true=1, false=0ใจ่ชญใ‚€)ใ€‚ใ“ใ†ใ™ใ‚‹ใจ $\sum_{j=i+1}^{N} f(A_i, A_j)$ ใฏๆก็นฐไธŠใ‚Šๅˆ†ใ‚’ๅพŒใ‹ใ‚‰ๅทฎใ—ๅผ•ใ„ใŸ $\sum_{j=i+1}^{N} (A_i + A_j) - 10^8 \times \sum_{j=i+1}^{N} S_{ij}$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ $i=1..N$ ใซใคใ„ใฆ็นฐใ‚Š่ฟ”ใ™ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏ $A_i$ ใ‚’ๆ˜‡้ †ใซไธฆใณๆ›ฟใˆใฆใ‚‚็ญ”ใˆใŒๅค‰ใ‚ใ‚‰ใชใ„ใ“ใจใ‚’ๅˆฉ็”จใ—ใฆใ€ๆก็นฐไธŠใ‚Šใฎๅ›žๆ•ฐใ‚’ ๆฑ‚ใ‚ใฆใ„ใ‚‹ ใ€‚ใ“ใ‚Œใ‚’ๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใฎใฏใ‹ใชใ‚Šใพใšใ‹ใฃใŸใ€‚ไธฆใณๆ›ฟใˆใฆใ‚‚็ญ”ใˆใŒๅค‰ใ‚ใ‚‰ใชใ„ๅ ดๅˆใฏใใ†ใ™ใ‚‹ใ€ใจใ„ใ†ใฎใ‚’่‚ใซ้Š˜ใ˜ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚

ABC 353-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Cๅ•้กŒใ‚ˆใ‚Šๆ˜“ใ—ใ‹ใฃใŸใ€‚

$x, y$ ใฎๆกๆ•ฐใ‚’ $W_x, W_y$ ใจใ™ใ‚‹ใ€‚ๆ•ฐๅ€คใ‚’ๆ–‡ๅญ—ๅˆ—ใซๅค‰ๆ›ใ™ใ‚Œใฐใ€ๆกๆ•ฐใฏๆ–‡ๅญ—ๅˆ—้•ทใจใ—ใฆๅˆ†ใ‹ใ‚‹ใ€‚ $f(x, y) = x \times 10^{W_y} + y$ ใงใ‚ใ‚‹ใ€‚

$\sum_{j=i+1}^N f(A_i, A_j)$ ใฏ $A_i \times (\sum_{j=i+1}^{N} 10^{W_{A_j}}) + (\sum_{j=i+1}^{N} A_j)$ ใงใ‚ใ‚‹ใ€‚

ใ“ใ“ใง $CY_{1..i} = \sum_{j=1}^{i} 10^{W_j}$ , $CX_{1..i} = \sum_{j=1}^{i} A_j$ ใ‚’็ดฏ็ฉๅ’Œใจใ—ใฆๆŒใคใ€‚ $10^{0..200001}$ ใ‚’ใ‚ใ‚‰ใ‹ใ˜ใ‚ๆฑ‚ใ‚ใฆใŠใใจ $CY_{1..i}$ ใฎ่จˆ็ฎ—้‡ใŒๆธ›ใ‚‹ใ€‚

$\sum_{i=1}^{N-1} \sum_{j=i+1}^{N} f(A_i, A_j)$ ใฎๅค–ๅดใซใคใ„ใฆใ€ๅ†…ๅดใฎๅ€คใ‚’ไธŠ่จ˜ใ‹ใ‚‰ๆฑ‚ใ‚ใ€็ดฏ็ฉๅ’Œใ‹ใ‚‰ $A_i$ ๆˆๅˆ†ใ‚’ๅผ•ใใฎใ‚’็นฐใ‚Š่ฟ”ใ™ใ€‚่จˆ็ฎ—ๅ…จไฝ“ใ‚’ 998244353 ใง่กŒใฃใฆใ‚ˆใ„ใฎใงใ€Cๅ•้กŒใ‚ˆใ‚Šใ‚‚ๆ‚ฉใฟใŒ็„กใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚’่ชญใ‚€ใจใ€ใ‚‚ใฃใจใ™ใฃใใ‚ŠๅฎŸ่ฃ…ใงใใ‚‹ใ€‚ใ“ใ‚ŒใŒใงใใชใ„ใจใ€ไป–ใฎๅ•้กŒใ‚’่งฃใๆ™‚้–“ใ‚’ใฒใญใ‚Šๅ‡บใ›ใชใ„ใ€‚

ABC 353-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Trieๆœจใ‚’ๅฟ˜ใ‚Œใฆใ„ใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใ‚‰ใ—ใ„ใ“ใจใ‚’่ฉฆใฟใฆๅคฑๆ•—ใ—ใ€rolling hashใ‚’ๆ€ใ„ใคใ„ใŸใฎใฏใ‚ณใƒณใƒ†ใ‚นใƒˆ็ต‚ไบ†ๅพŒใ€ไธ‰ๅๆ•ฐๅˆ†็ตŒใฃใฆใ‹ใ‚‰ใงใ‚ใ‚‹ใ€‚ๆ–น้‡่ปขๆ›ใŒ้…ใ‚Œใฆrolling hashใ‚’ๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใฎใฏ้ ‚ใ‘ใชใ„ใ€‚

$i=1..N$ ใซใคใ„ใฆใ€ๅ„ๆ–‡ๅญ—ๅˆ— $S_i$ ใฎใใ‚Œใžใ‚ŒใฎๆŽฅ้ ญ่พžใคใพใ‚Šๅ…ˆ้ ญ $1..|S_i|$ ๆ–‡ๅญ—ใซใคใ„ใฆrolling hashใ‚’ไฝœใ‚‹ใ€‚ใ‚ใ‚‹ใƒใƒƒใ‚ทใƒฅๅ€คใ‚’ๅ–ใ‚‹ๆŽฅ้ ญ่พž $P$ ใŒ $K$ ๅ€‹ใ‚ใ‚Œใฐใ€็ญ”ใˆใซๅฏพใ—ใฆ $|P| K (K-1)$ ใ ใ‘ๅฏ„ไธŽใ™ใ‚‹ใฎใงๅŠ ็ฎ—ใ™ใ‚‹ใ€‚็‰นใซ $K = 1$ ใฎใจใใ€ใ“ใฎๅ€คใฏ0ใซใชใ‚‹ใฎใงๅฏ„ไธŽใ—ใชใ„ใ€‚

Rolling hashใฎไฝฟใ„ๆ–นใฏใ„ใคใ‚‚้€šใ‚Šใงใ€็ด ๆ•ฐใ‚’่ค‡ๆ•ฐไพ‹ใˆใฐ $2^{29}-3, 2^{29}-33, 2^{29}-43$ ใ‚’็”จๆ„ใ™ใ‚‹ใ€‚็ด ๆ•ฐใŒไธ€ใคใ ใ‘ใ ใจใƒใƒƒใ‚ทใƒฅ่ก็ชใŒ่ตทใใฆWAใ™ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ2ใซใ‚ใ‚‹้€šใ‚Šใ€ๆ˜‡้ †ใซไธฆในๆ›ฟใˆใŸๆ–‡ๅญ—ๅˆ—ใซใคใ„ใฆใ€ใ‚ใ‚‹ๆŽฅ้ ญ่พžใŒๅ–ใ‚‹ๅŒบ้–“ใ‚’ๆฑ‚ใ‚ใ‚Œใฐใ‚ˆใ„ใ€‚ใชใ‚“ใจใชใใ“ใฎๆ–นๆณ•ใง่กŒใ‘ใ‚‹ใจๆ€ใฃใŸใŒใ€ๅ…ทไฝ“็š„ใชใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใซ่ฝใจใ—่พผใ‚€ใ“ใจใŒใงใใชใ‹ใฃใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌใ‚’่ฆ‹ใฆๅฎŸ่ฃ…ใ—ใŸใ‚‚ใฎใŒ ใ“ใกใ‚‰ ใงใ‚ใ‚‹ใ€‚

Trieๆœจใจใฏ่ฆใ™ใ‚‹ใซ็™พไบบไธ€้ฆ–ใฎๆฑบใพใ‚Šๅญ—ใ‚’ๆง‹ๆˆใ™ใ‚‹ๆœจๆง‹้€ ใงใ‚ใ‚‹ใ€‚ๅฎŸ่ฃ…ใ™ใ‚‹ใจ ใ“ใกใ‚‰ ใ€‚ๆฑบใพใ‚Šๅญ—ใฏใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆ€ใ„ใคใ„ใŸใŒใ€็ฟŒๆœใ‚นใ‚ฏใƒฉใƒƒใƒใ‹ใ‚‰ๅฎŸ่ฃ…ใ™ใ‚‹ใฎใซ51ๅˆ†ๆŽ›ใ‹ใฃใŸใฎใงใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซACใ™ใ‚‹ใซใฏ้–“ใซๅˆใ‚ใชใ„ใ€‚Rolling hashใ‚’ๆœ€ๅˆใซๆ€ใ„ใคใใ—ใ‹ใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซACใงใใ‚‹่ฆ‹่พผใฟใฏใชใ‹ใฃใŸใ€‚

้กž้กŒใฏ ABC 287-E ใงใ€ๅ•้กŒๅใฏใใฎใ‚‚ใฎใšใฐใ‚Š Karuta ใงใ‚ใ‚‹ใ€‚ใ‚ฝใƒผใƒˆใ—ใฆ่งฃใๆ–นๆณ•ใจใ€Trieๆœจใ‚’ไฝœใ‚‹ ๆ–นๆณ• ใŒใ‚ใ‚‹ใ€‚

ABC 354-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ30ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚ๆญฃ่งฃ่€…ๆ•ฐใ‹ใ‚‰ใ—ใฆDใ‚ˆใ‚ŠEใฎๆ–นใŒๆ˜“ใ—ใใ†ใ ใจๆ€ใฃใฆE,Dใฎ้ †็•ชใซ่งฃใใฎใ‚‚ใ€TLEใจWAใŒๅ‡บใฆใ‚‚ๅ†ท้™ใซๅˆ‡ใ‚Š่ฟ”ใ—ใฆACใ™ใ‚‹ใ“ใจใ‚‚ใงใใŸใฎใงใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใฎๆŒฏ่ˆžใ„ใŒใพใ‚ใพใ‚ไธŠๆ‰‹ใใชใฃใŸใ‚ˆใ†ใงใ‚ใ‚‹ใ€‚ใจใฏใ„ใˆ4ใƒšใƒŠใฏใ‚„ใ‚Šใ™ใŽใงใ€ใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐๆฐด่‰ฒใ‚’้€ƒใ—ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Šใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใ™ใ‚Œใฐใ„ใ„ใฎใ ใŒใ€ใƒซใƒผใƒ—ใ‚’ๆŠœใ‘ใ‚‹ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใ‚’้–“้•ใˆใใ†ใงใ‚ใ‚‹ใ€‚ $0 &lt; H$ ใชใฎใงไปฅไธ‹ใงใ‚ˆใ„ใ€‚

  • $d = 0$ ๆ—ฅ็›ฎใงๅˆๆœŸๅŒ–ใ™ใ‚‹
  • ๆค็‰ฉใ‚’ $2^i : i \geq 0$ ไผธใฐใ™ใ€‚ $2^i$ ใซใชใ‚‹ใ€ใงใฏใชใ„ใฎใงๆณจๆ„ใ€‚
  • ๆ—ฅๆ•ฐใ‚’1ๅข—ใ‚„ใ™

ABC 354-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$S$ ใ‚’ๆ˜‡้ †ใซใชใ‚‰ในใฆ $T mod N$ ็•ช็›ฎใงใ‚ใ‚‹ใ€‚่ฆชๅˆ‡ใซใ‚‚0-based indexing ใชใฎใงใ“ใ‚Œใงใ„ใ„ใ€‚ std::vector<std::pair<std::string, Num>> ใฏไฝ™่จˆใ ใฃใŸใ€‚

ABC 354-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

350็‚นๅ•้กŒใ ใจๆ€ใฃใฆ่ญฆๆˆ’ใ—ใŸใŒใ€ๆ…Ž้‡ใซๅฎŸ่ฃ…ใ™ใ‚Œใฐใ‚ˆใ‹ใฃใŸใ€‚

$A$ ใฎ้™้ †ใซใ€ $A$ ใŒๅŒใ˜ใ‚ซใƒผใƒ‰ใฏ $C$ ใฎๆ˜‡้ †ใซไธฆในใ‚‹ใ€‚้™้ †ใจๆ˜‡้ †ใŒๆททใ–ใ‚‹ใจใ‚„ใ‚„ใ“ใ—ใ„ใŒใ€ $-A$ ใฎๆ˜‡้ †ใจใ„ใ†ใ“ใจใซใ™ใ‚Œใฐใ‚ˆใใ€ $-A_i, C_i, i$ ใ‚’ std::vector<std::tuple<Num,Num,Num>> ใซๅ…ฅใ‚Œใฆๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ™ใ‚‹ใ€‚ไธ€็žฌ struct operator < ใ‚’ไฝฟใŠใ†ใจใ—ใŸใฎใฏๆ™‚้–“ใฎ็„ก้ง„ใงใ‚ใ‚‹ใ€‚

ๅพŒใฏใ‚ซใƒผใƒ‰ใ‚’ๅ…ˆ้ ญใ‹ใ‚‰้ †ใซๅ–ใ‚Šๅ‡บใ—ใ€ๆจใฆใ‚‹ใ‹ๆจใฆใชใ„ใ‹ๅˆคๆ–ญใ™ใ‚‹ใ€‚ๅˆคๆ–ญๅŸบๆบ–ใฏใ€ๅผฑใ„ใ‚ซใƒผใƒ‰ใฏใ‚ณใ‚นใƒˆใŒๅŒใ˜ใ‹ๅฎ‰ใใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ใ€ใจใ„ใ†ใ“ใจใงใ‚ใ‚‹ใ€‚

  • $A_{base}$ ใจ $C_{base}$ ใ‚’็„ก้™ๅคงใงๅˆๆœŸๅŒ–ใ™ใ‚‹
  • $A_i &lt; A_{base}$ ใ‹ใค $C_i \leq C_{base}$ ใชใ‚‰ใ‚ซใƒผใƒ‰ $i$ ใ‚’ๆจใฆใชใ„ใ€‚ไฝตใ›ใฆใ€ $A_i := A_{base}$ , $C_i := C_{base}$ ใซๆ›ดๆ–ฐใ™ใ‚‹ใ€‚
  • $A_i &lt; A_{base}$ ใ‹ใค $C_i &gt; C_{base}$ ใชใ‚‰ใ‚ซใƒผใƒ‰ $i$ ใ‚’ๆจใฆใ‚‹ใ€‚ๅ•้กŒๆ–‡้€šใ‚Šใงใ‚ใ‚‹ใ€‚
  • $A_i = A_{base}$ ใชใ‚‰ใ€ใ‚ซใƒผใƒ‰ $i$ ใ‚’ๆจใฆใ‚‹ใ€‚ใชใœใชใ‚‰ๅผทใ•ใŒๅŒใ˜ใงใ‚ณใ‚นใƒˆใŒไฝŽใ„ใ‚ซใƒผใƒ‰ใŒใ‚ใ‚‹ใชใ‚‰ใ‚‚ใ†้›†ใ‚ใฆใ„ใ‚‹ใฏใšใ ใ‹ใ‚‰ใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏๅผทใ•ใงใชใใ‚ณใ‚นใƒˆใฎ้ †ใซ่ตฐๆŸปใ—ใฆใ„ใ‚‹ใ€‚

ABC 354-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Eๅ•้กŒใ‚ˆใ‚Š้›ฃใ—ใ‹ใฃใŸใŒใ€Eๅ•้กŒใฎใƒกใƒขๅŒ–ใ‚’ๆ€ใ„ๅ‡บใ›ใชใ‹ใฃใŸใ‚‰Dๅ•้กŒใฎๆ–นใŒๆ˜“ใ—ใ‹ใฃใŸใจ่จ€ใˆใ‚‹ใ€‚้š›ใฉใ„ใจใ“ใ‚ใง5ๅฎŒใงใใŸใ€‚

ๅŽŸ็‚นใ‚’ $O = (-10^{9}, -10^{9})$ ใซๅ–ใฃใฆไบŒๆฌกๅ…ƒ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚‹ใ€‚ใคใพใ‚Š $O-(x,y)$ ใฎ้ป’ใงๅก—ใ‚‰ใ‚ŒใŸ้ ˜ๅŸŸใ‚’ $S(x,y)$ ใงๆฑ‚ใ‚ใ‚‹ใจใ—ใฆใ€ๆฑ‚ใ‚ใ‚‹็ญ”ใˆใฏ $S(C,D) - S(A,D) - (C,B) + (A,B)$ ใงใ‚ใ‚‹ใ€‚

ๅพŒใฏ $S(x,y)$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ๅŽŸ็‚นใ‹ใ‚‰ใฎ็›ธๅฏพไฝ็ฝฎใจใ—ใฆใ€ $(x,y)$ ใซใใ‚Œใžใ‚Œ $10^{9}$ ใ‚’่ถณใ—ใ€ $(4cx + ry, 4cy + ry), 0 \leq rx &lt; 4, 0 \leq ry &lt; 4$ ใจใ™ใ‚‹ใ€‚่ฆใ™ใ‚‹ใซๆจกๆง˜ใฎๅ‘จๆœŸ4ใงๅ‰ฒใฃใŸไฝ™ใ‚Šใ‚’ๅพฎ่ชฟๆ•ดใ™ใ‚‹ใ€‚

  • 4x4ใƒžใ‚น(้ข็ฉใฏ16)ใซใคใ„ใฆใ€้ข็ฉใฏ $cx \times cy \times 16$
  • ๅณใซใฏใฟๅ‡บใ—ใŸ $rx \in {0..3}$ ๅˆ—(้ข็ฉใฏ $r[0..3] = 0,6,12,14$ )ใซใคใ„ใฆใ€้ข็ฉใฏ $cy \times r[rx]$
  • ไธŠใซใฏใฟๅ‡บใ—ใŸ $ry \in {0..3}$ ่กŒใซใคใ„ใฆใ€้ข็ฉใฏ $cx \times ry \times 4$
  • ๅณไธŠใซใฏใฟๅ‡บใ—ใŸ $rx \in {0..3}$ ๅˆ— $ry \in {0..3}$ ่กŒใซใคใ„ใฆใ€4x4ใฎๆ—ฉ่ฆ‹่กจ $table[ry][rx]$ ใ‹ใ‚‰ๆฑ‚ใ‚ใ‚‹ใ€‚
Num table[4][4] = {
    {0,0,0,0},
    {0,2,3,3},
    {0,1,3,4},
    {0,2,3,3}
};

331-Dใฎๆ•™่จ“ใฏ็”Ÿใใฆใ„ใŸใ—ใ€349-Eใฏๅฎšๆ•ฐใƒ†ใƒผใƒ–ใƒซใ‚’้–“้•ใˆใฆACใงใใชใ‹ใฃใŸใŒใ€ไปŠๅ›žใฏACใงใใŸใ€‚ใ—ใ‹ใ—ACใ™ใ‚‹ใพใง2ๅ›žใ‚‚WAใ—ใŸใฎใฏ้ ‚ใ‘ใชใ„ใ€‚

ABC 354-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Cๅ•้กŒใ‚’ACใ—ใŸๆ™‚็‚นใงใ€Dๅ•้กŒใ‚ˆใ‚ŠEๅ•้กŒใ‚’ๆญฃ่งฃใ—ใŸไบบใŒๅคšใ‹ใฃใŸใฎใงใ€Eๅ•้กŒใ‚’ๅ…ˆใซ่งฃใ„ใŸใ€‚็‚นๆ•ฐใŒ้ซ˜ใใฆๆ˜“ใ—ใ„ๅ•้กŒใ‚’้ธใถใฎใฏๅˆ็†็š„ใงใ‚ใ‚‹ใ€‚ใ—ใ‹ใ—ๅฑใ†ใๆฒผใซใƒใƒžใ‚Šใใ†ใ ใฃใŸใ€‚

349-Eใ‚’่งฃใๆใญใŸๆ‚ชๅคขใŒ้ ญใ‚’ใ‚ˆใŽใ‚Šใ€ไปŠๅบฆใ“ใใฏใ‚ฒใƒผใƒ ๆœจใ‚’่งฃใ„ใฆ่ฆ‹ใ›ใ‚‹ใจๆ„ๆฐ—่พผใ‚“ใ ใฎใ ใŒใ€ใ‚ˆใ่€ƒใˆใŸใ‚‰ๆœจใงใฏใชใ„ใฎใงTLEใ—ใŸใ€‚ใชใ‚“ใจใ‚‚ใ‚‚ใฃใŸใ„ใชใ„ใƒšใƒŠใƒซใƒ†ใ‚ฃใงใ€ใ“ใ‚Œใ‚’้ฟใ‘ใŸใ‚‰ๅ†ๅ…ฅๆฐดใงใใŸใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

่งฃ่ชฌใซใฏbitDPใจใ‚ใ‚‹ใ€‚ๅ€‹ไบบ็š„ใซใฏ็Šถๆ…‹ใŒใ‚ซใƒผใƒ‰ใฎๆœ‰็„กใซๅฏพๅฟœใ—ใ€็Šถๆ…‹้ท็งปใ‚’่พบใจใ™ใ‚‹ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใจ็†่งฃใ—ใฆใ„ใ‚‹ใ€‚ๅˆๆœŸ็Šถๆ…‹ใซใ™ในใฆใฎใ‚ซใƒผใƒ‰ใŒใ‚ใ‚‹็Šถๆ…‹ใงDFSใ—ใ€ใŠใชใ˜ใฟใฎใ‚ฒใƒผใƒ ๆœจใจๅŒใ˜ๆŽข็ดขใ‚’่กŒใ†ใ€‚349-Eใฎ่งฃ่ชฌใจใปใผๅŒใ˜ใงใ‚ใ‚‹ใ€‚

  • ไธ€ๆ‰‹็›ฎใฎๆ‰‹็•ช $P_1$ ใฏ Takahashiใ€ๆฌกใฎๆ‰‹็•ช $P_2$ ใฏ Aoki ใ€ใใฎๆฌกใฎๆ‰‹็•ช $P_3$ Takahashi ... ใ‚’็นฐใ‚Š่ฟ”ใ™ใ€‚ๆ‰‹็•ชใ”ใจใซใ‚ซใƒผใƒ‰ใŒๆธ›ใ‚‹ใฎใงใ€ใ„ใคใ‹ใฏๆ‰‹่ฉฐใพใ‚Šใซใชใ‚‹ใ€‚
  • ๆ‰‹็•ช $P$ ใซๅ–ใ‚Œใ‚‹ใ‚ซใƒผใƒ‰ใŒใชใ‘ใ‚ŒใฐๅพŒๆ‰‹ $\lnot P$ ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚
  • ๆ‰‹็•ช $P$ ใซๅ–ใ‚Œใ‚‹ใ‚ซใƒผใƒ‰ใŒใ‚ใ‚Œใฐใ€ๅ–ใฃใŸๅพŒใฎ็Šถๆ…‹ใซ้ท็งปใ™ใ‚‹ใ€‚ๅ–ใฃใŸๅพŒใฎ็Šถๆ…‹ใซ $P$ ๅฟ…ๅ‹ใฎๆ‰‹ใŒใ‚ใ‚Œใฐใ€ใใฎๆ‰‹ใ‚’ๆ‰“ใคใฎใง $P$ ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚ๅ–ใฃใŸๅพŒใฎ็Šถๆ…‹ใซ $P$ ๅฟ…ๅ‹ใฎๆ‰‹ใŒไธ€ใคใ‚‚ใชใ‘ใ‚ŒใฐๅพŒๆ‰‹ $\lnot P$ ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚

ๆ‰‹็•ชใจใจใ‚‚ใซใ‚ซใƒผใƒ‰ใฏๅ˜่ชฟๆธ›ๅฐ‘ใ™ใ‚‹ใŒใ€ๆœจๆง‹้€ ใงใฏใชใ„(ใ‚ใ‚‹็Šถๆ…‹ใซ้ท็งปใ™ใ‚‹็Šถๆ…‹้ท็งปๅ…ƒใŒ่ค‡ๆ•ฐใ‚ใ‚‹)ใฎใงใ€ใƒกใƒขๅŒ–ใ—ใชใ„ใจTLEใ™ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ใ™ใฃใ‹ใ‚Šๅฟ˜ใ‚Œใฆ15ๅˆ†ใจ2ใƒšใƒŠใ‚’ใ‚‚ใ‚‰ใฃใฆใ—ใพใฃใŸใ€‚ๅ–ใ‚Š้™คใ‘ใ‚‹ใ‚ซใƒผใƒ‰ใฎ็ต„ใฏ $O(N^2)$ ใ ใŒใ€ใ“ใ‚Œใ‚’ๅฎšๆ•ฐๅ€้ซ˜้€ŸๅŒ–ใ—ใ‚ˆใ†ใจใ„ใ†่ฆ‹ๅฝ“้•ใ„ใชๅŠชๅŠ›ใซๆ™‚้–“ใ‚’ไฝฟใฃใฆใ—ใพใฃใŸใฎใŒ็—›ใ„ใ€‚

ABC 354-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ…จใ่ฆ‹ๅฝ“ใŒใคใ‹ใชใ‹ใฃใŸใฎใง่งฃ่ชฌใ‚’่ชญใ‚“ใงๅฎŸ่ฃ…ใ—ใŸใ€‚ใจใ„ใ†ใ‚ˆใ‚Šupsolveใ—ใŸใฎใฏๅ…ฌๅผ่งฃ่ชฌใฎใ‚ณใƒผใƒ‰ไพ‹ใจใปใผๅŒใ˜ใงใ‚ใ‚‹ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ไฝฟใฃใŸ LISใฎๆฑ‚ใ‚ๆ–น ใจใ€ๅบงๆจ™ๅœง็ธฎใฎไป•ๆ–นใ‚’ๅญฆในใ‚‹ใ€‚ไปŠใพใงๅบงๆจ™ๅœง็ธฎใฏ for(const auto& [k,v] : a std::map) ใ—ใฆใ„ใŸใŒใ€ใ“ใ†ใ„ใ†ๆ–นๆณ•ใ‚‚ใ‚ใ‚‹ใ€‚

ABC 355- (ใ‚ณใƒณใƒ†ใ‚นใƒˆ31..40ๅ›ž็›ฎ)

ABC 355-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ31ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚E,Fๅ•้กŒใฎๆญฃ่งฃ่€…ๆ•ฐใŒๅฐ‘ใชใ™ใŽใฆใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใŒๆฐด่‰ฒใซใชใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

้›†ๅˆ ${1,2,3}$ ใ‹ใ‚‰ $A,B$ ใ‚’้™คใ„ใฆใ€้›†ๅˆใฎ่ฆ็ด ใŒ1ๅ€‹ใชใ‚‰ใใ‚ŒใŒ็ญ”ใˆใชใฎใงๅ‡บๅŠ›ใ™ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐ -1 ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

std::set::erase(value) ใฏใ€ value ใซ่ฉฒๅฝ“ใ™ใ‚‹่ฆ็ด ใŒ้›†ๅˆใซใชใ‘ใ‚Œใฐ ไฝ•ใ‚‚ใ—ใชใ„ใ€‚ std::set::contains ใฏๅ˜ใซไบŒๅบฆๆ‰‹้–“ใงใ‚ใ‚‹ใ€‚

ABC 355-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$A,B$ ใฎๅ€คใจใ€้›†ๅˆใฎๅ‡บ่‡ช( $A$ ใชใ‚‰ $0$ , $B$ ใชใ‚‰ $1$ ) ใ‚’็ต„ใซใ—ใฆ $(A_i, 0), (B_j, 1)$ ใ‚’ไฝœใ‚Šใ€ $A,B$ ใฎๅ€คใงๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ™ใ‚‹ใ€‚้›†ๅˆใฎๅ‡บ่‡ชใŒไบŒใค้€ฃ็ถšใง $0$ ใซใชใ‚‹ใ“ใจใŒใ‚ใ‚Œใฐ Yes ใ€ไธ€ใคใ‚‚ใชใ‘ใ‚Œใฐ No ใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใฏๅฐ‘ใ—็•ฐใชใ‚‹ใ€‚

ABC 355-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$A_i$ ใฏไธ€ๆ„ใชใฎใงใ€ $A_i$ ใงใฉใฎใƒžใ‚น็›ฎใŒ้–‹ใ„ใŸใ‹ใฏ็ฎก็†ใ—ใชใใฆใ‚ˆใ„ใ€‚็ธฆใ€ๆจชใ€ๆ–œใ‚ๅณไธŠใ€ๆ–œใ‚ๅณไธ‹ใฎใใ‚Œใžใ‚Œใƒฉใ‚คใƒณใซใคใ„ใฆ $A_i$ ใงใฉใฎใƒžใ‚น็›ฎใŒ้–‹ใ„ใŸใ‹ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚็ธฆๆจชๆ–œใ‚ใใ‚Œใžใ‚Œใƒฉใ‚คใƒณใŒ $N$ ๅ€‹้–‹ใ„ใŸใ‹ใฉใ†ใ‹ใฏใ€ไปŠ้–‹ใ‘ใŸใƒžใ‚นใซ้–ขใ™ใ‚‹ใ‚‚ใฎใ ใ‘่ชฟในใ‚Œใฐใ„ใ„ใฎใงใ€ไธ€ใƒžใ‚น้–‹ใ‘ใŸๆ™‚ใฎ่จˆ็ฎ—้‡ใฏ $O(1)$ ใงใ‚ใ‚‹ใ€‚

ABC 355-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ˆใ่ฆ‹ใŸใ‚‰3็ง’ๅˆถ้™ใฎ2637 msใ ใฃใŸใ€‚ใ‚ˆใใ“ใ‚Œใง้€šใฃใŸใŒใ€ๅ…ฌๅผ่งฃ่ชฌ2ใฎๆ–นๆณ•ใชใฎใงใ„ใ„ใฎใ ใ‚ใ†ใ€‚

$l,r$ ใ‚’ๅบงๆจ™ๅœง็ธฎใ™ใ‚‹ใ€‚ใคใพใ‚Š $l,r$ ใชใ‚‰ๅŒใ˜ๅ€คใ‚’ๅŒใ˜ๅบงๆจ™ใซใ™ใ‚‹ใ‚ˆใ†ใ€ $l,r$ ใฎๆ˜‡้ †ใซ0ใ‹ใ‚‰้€ฃ็•ชใ‚’ๆŒฏใ‚‹ใ€‚ๅบงๆจ™ใฎๆ•ฐใ‚’ $K$ ใจใ™ใ‚‹ใ€‚ไปฅไธ‹ $l,r$ ใฏๅบงๆจ™ๅœง็ธฎๆธˆใฎๅ€คใจใ™ใ‚‹ใ€‚

ๅคงใใ• $K$ ใฎใƒ•ใ‚งใƒ‹ใƒƒใ‚ฏๆœจใ‚’็”จๆ„ใ—ใฆ(ใ‚ˆใ‚Š็ฐกๅ˜ใซใฏๅคงใใ•ใ‚’ $2N$ ๅ€‹ใซใ—ใฆ)ใ€ $l_i$ ใŒไธ€ๅ›ž็พใ‚Œใ‚‹ใ”ใจใซใ€ $l_i$ ็•ช็›ฎใซ1ใ‚’่ถณใ—ใฆใ€ใ™ในใฆใฎๅŒบ้–“ใซใคใ„ใฆ $l_i$ ใ‚’ใƒ•ใ‚งใƒ‹ใƒƒใ‚ฏๆœจใซ่ผ‰ใ›ใ‚‹ใ€‚

$l_{i} , r_{i}$ ใ‚’ $l_{i}$ ใงใ‚ฝใƒผใƒˆใ™ใ‚‹ใ€‚ไปฅไธ‹ $i$ ใฏใ‚ฝใƒผใƒˆๆธˆใฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใจใ™ใ‚‹ใ€‚ใใ†ใ™ใ‚Œใฐใ€ $r_{i} : i=1..N$ ใจ $l_{j} : i &lt; j$ ใŒ้‡ใชใ‚‹ใ‚ˆใ†ใช $j$ ใŒไฝ•ๅ€‹ใ‚ใ‚‹ใ‹ใ‚’ๆฑ‚ใ‚ใ‚‹ๅ•้กŒใซๅธฐ็€ใงใใ‚‹ใ€‚ $i=1..N$ ใซใคใ„ใฆใ€ใพใš $l_i$ ่‡ช่บซใ‚’ใƒ•ใ‚งใƒ‹ใƒƒใ‚ฏๆœจใ‹ใ‚‰ๆธ›ใ‚‰ใ—ใฆใ€ $[l_i, r_i]$ ใฎๅŒบ้–“ๅ’ŒใŒๅŒบ้–“ $i$ ใจ้‡ใชใ‚‹ๅŒบ้–“ใฎๆ•ฐใงใ‚ใ‚‹(ๅฏพ็งฐใช็ต„ใฏ1ๅ›žใ ใ‘ๆ•ฐใˆใ‚‹)ใ€‚ $[l,r]$ ใŒไธก้–‰ๅŒบ้–“ใงใ‚ใ‚‹ใ“ใจใซๆณจๆ„ใ™ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹้€šใ‚Šใ€ๅฐบๅ–ใ‚Šๆณ•ใง $O(N)$ ใง ่งฃใ‘ใ‚‹ ใ€‚ๅคงไบ‹ใช็‚นใฏใ€ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใŸ $L_i$, $R_j$ ใŒใ‚ใฃใŸใจใ—ใฆ(ๅ…ƒใฎ็ต„ใจ $L,R$ ใŒใฐใ‚‰ใฐใ‚‰ใซใชใ‚‹ใŒใ“ใ‚Œใงใ„ใ„)ใ€ $R_j &lt; L_i$ ใฏๅŒบ้–“ $i$ ใซใคใ„ใฆ $[L_j, R_j] &lt; [L_i, R_i]$ ใ‚’1ๅ›žใ ใ‘ๆ•ฐใˆใ‚‹ใฎใงใ€ๅŒบ้–“ $j$ ใฎใจใใฏๆ•ฐใˆใชใ„ใจใ„ใ†ใ“ใจใงใ‚ใ‚‹ใ€‚ใ“ใ‚ŒใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

ABC 355-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไฝ•ใจใชใ่งฃๆณ•ใฏๅˆ†ใ‹ใ‚‹(349-D)ใŒใ€ใ„ใ–ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใซ่ฝใจใ—่พผใ‚‚ใ†ใจใ™ใ‚‹ใจใฉใ†ใ—ใฆใ„ใ„ใ‹ใ•ใฃใฑใ‚Šๅˆ†ใ‹ใ‚‰ใชใ„ใ€‚70ๅˆ†ๆŽ›ใ‹ใฃใฆ่งฃใ‘ใšใ€ๅ…ฌๅผ่งฃ่ชฌใ‚’่ชญใ‚“ใงใ‚‚่งฃใ‘ใšใ€ๅ…ฌๅผๅฎŸ่ฃ…2ใฎๅฎŸ่ฃ…ไพ‹ใ‚’่ฆ‹ใฆใ‚ˆใ†ใ‚„ใๅˆ†ใ‹ใฃใŸใ€‚ๅขƒ็•Œๅ€คใฎๆ‰ฑใ„ใŒใจใฆใ‚‚ๅคงๅค‰ใงใ‚ใ‚‹ใ€‚

349-Dใซๅฏพใ—ใฆใ€ๅŠ ็ฎ—ใ ใ‘ใงใชใๆธ›็ฎ—ใ‚‚ใงใใ‚‹ใ‚ˆใ†ใซใ—ใฆใ€ๅŒบ้–“ๆ•ฐใŒๆœ€ใ‚‚ๅฐ‘ใชใ„ๅŒบ้–“ๅˆ†ๅ‰ฒใ‚’้ธในใฐใ‚ˆใ„ใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใซใ‚ใ‚‹ใ‚ˆใ†ใซๅ†ๅธฐ็š„ใซใ™ใ‚‹ในใใงใ€ $[0,L)$ , $(R,2^{n})$ ใ ใ‘ๆธ›็ฎ—ใ™ใ‚‹ใจๆ€ใฃใŸๆ™‚็‚นใง่งฃใ‘ใชใ‹ใฃใŸใฎใ ใ‚ใ†ใ€‚

ABC 355-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ…จใ่งฃๆณ•ใฎ่ฆ‹ๅฝ“ใŒใคใ‹ใชใ‹ใฃใŸใฎใงใ€่งฃ่ชฌใ‚’่ชญใ‚“ใงๅฎŸ่ฃ…ใ—ใŸใ€‚DiffใŒใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐ+700ใใ‚‰ใ„ใซใชใ‚‹ใจใ€ใ“ใ†ใ„ใ†ๅ•้กŒใ‚’่งฃใ‘ใ‚‹ไบบใฏใ™ใ”ใ„ใงใ™ใญใจใ„ใ†ๆ„Ÿๆƒณใ ใ‘ใซใชใฃใฆใ€ใฉใ†ใ‚„ใฃใŸใ‚‰่‡ชๅˆ†ใ‚‚ใงใใ‚‹ใ‚ˆใ†ใซใชใ‚‹ใฎใ‹ใซ่ฝใจใ—่พผใ‚ใชใ„ใ€‚

ABC 356-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ32ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Dๅ•้กŒใฎๅฎŸ่ฃ…ใŒๅˆใ‚ใšใซใƒ‘ใƒ‹ใƒƒใ‚ฏใซใชใ‚Šใ€ใใ ใใ ใซใชใฃใŸใพใพEๅ•้กŒใ‚’่ฝใจใ—ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚„ใ‚Šๆ–นใฏ่‰ฒใ€…ใ‚ใ‚Šใใ†ใ ใŒใ€ std::reverse ใŒๅˆ†ใ‹ใ‚Šใ‚„ใ™ใ„ใ€‚ใ‚คใƒ†ใƒฌใƒผใ‚ฟใงๆŒ‡ๅฎšใ™ใ‚‹ๅŒบ้–“ใฏ $[L,R)$ ใชใฎใงๆณจๆ„ใ™ใ‚‹ใ€‚ๅ…จไฝ“ใ‚’้€†้ †ใซใ™ใ‚‹ใ“ใจใ‚’ๆ€ใ„ๆตฎใ‹ในใ‚Œใฐๅˆ†ใ‹ใ‚‹ใ€‚

ABC 356-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$X_{1..N,i}$ ใซใคใ„ใฆใ€ $S_{i}$ ใ‚’็ดฏ็ฉใ—ใฆใ€ใ™ในใฆใฎ $i=1..M$ ใซใคใ„ใฆ $S_{i} \geq A_{i}$ ใ‹ใฉใ†ใ‹่ชฟในใ‚‹ใ€‚

ABC 356-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Š็ทๅฝ“ใŸใ‚Šใ™ใ‚Œใฐใ„ใ„ใ€‚

  • ๆญฃใ—ใ„้ตใฎใƒ‘ใ‚ฟใƒผใƒณใฏ $0..(2^{N}-1)$ ๅ€‹ใ‚ใ‚‹ใฎใงใ€้ต $i$ ใŒๆญฃใ—ใ„ = $i$ ใƒ“ใƒƒใƒˆ็›ฎใŒ็ซ‹ใฃใฆใ„ใ‚‹ใจใ„ใ†ใƒ“ใƒƒใƒˆใƒ‘ใ‚ฟใƒผใƒณใ‚’่ฉฆใ™
  • ๆญฃใ—ใ„้ตใฎใƒ‘ใ‚ฟใƒผใƒณใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใฆใ€ๆญฃใ—ใ„้ตใŒ $K$ ๆœฌไปฅไธŠใงใƒ‰ใ‚ขใŒ้–‹ใใ‹ใ€ๆญฃใ—ใ„้ตใŒ $K$ ๆœฌๆœชๆบ€ใงใƒ‰ใ‚ขใŒ้–‹ใ‹ใชใ‘ใ‚Œใฐใใฎๆญฃใ—ใ„้ตใฎใƒ‘ใ‚ฟใƒผใƒณใฏๆกไปถใ‚’ๆบ€ใŸใ™ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐๆกไปถใ‚’ๆบ€ใŸใ•ใชใ„ใ€‚

ใ“ใฎๆ™‚็‚นใง็žฌ้–“1186ไฝใชใฎใงใ€ไปŠๆ—ฅใฏใ‚คใ‚ฑใ‚‹ใจๆ€ใฃใŸใฎใ ใŒ...

ABC 356-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่งฃๆณ•ใฏใ™ใใซๆ€ใ„ใคใ„ใŸใŒใ€ๆ•ดๆ•ฐใ‚ชใƒผใƒใƒ•ใƒญใƒผใฎๆ‰ฑใ„ใŒๅ…จใๅˆ†ใ‹ใ‚‰ใšใƒ‘ใƒ‹ใƒƒใ‚ฏใซใชใฃใŸใ€‚ใ‚ใพใ‚Šใซใ‚‚ๆททไนฑใ—ใฆใปใจใ‚“ใฉๆญฃใ—ใ„ใ‚ณใƒผใƒ‰ใ‚’ๅฃŠใ—ใฆใ—ใพใ„ใ€30ๅˆ†20็ง’ใจ1ใƒšใƒŠใซใชใฃใฆใ—ใพใฃใŸใ€‚

$k \land M$ ใฎใใ‚Œใžใ‚Œใฎใƒ“ใƒƒใƒˆใซใคใ„ใฆใ€popcountใฏๅˆฅใซๆ•ฐใˆใฆใ‚ˆใ„ใ€‚ $0..N$ ใซใคใ„ใฆใ€0ใƒ“ใƒƒใƒˆ็›ฎ(LSB)ใฏ 0101... ใ€1ใƒ“ใƒƒใƒˆ็›ฎใฏ 00110011... ใจไธฆใถใ€‚

ใคใพใ‚Š $i$ ใƒ“ใƒƒใƒˆ็›ฎใฎpopcountใฎๅˆ่จˆใฏใ€ไปฅไธ‹ใฎ้€šใ‚Šใซใชใ‚‹ใ€‚ $M \land 2^i = 0$ ใชใ‚‰ $0$ ใงใ‚ใ‚‹ใ€‚ไปฅไธ‹ $M \land 2^i \ne 0$ ใจใ—ใฆ้ †ใซ่€ƒใˆใ‚‹ใ€‚

  • $2^i$ ๅ€‹ใฎ 0 ใจ $2^i$ ๅ€‹ใฎ 1 ใŒไธฆใถใƒ‘ใ‚ฟใƒผใƒณใ‚’็นฐใ‚Š่ฟ”ใ™
  • ใƒ‘ใ‚ฟใƒผใƒณใฎ้•ทใ•(็ซฏๆ•ฐๅˆ‡ๆจใฆ)ใฏ $C_{i} = (N+1) / 2^{i+1}$ ๅ€‹ใงใ‚ใ‚Šใ€popcount ใฏ $C_{i} \times 2^{i}$ ๅ€‹ใงใ‚ใ‚‹ใ€‚
  • ใƒ‘ใ‚ฟใƒผใƒณใฎๅพŒใซ็ถšใ็ซฏๆ•ฐใฏ $R_{i} = (N+1) mod 2^{i+1}$ ๅ€‹ใงใ‚ใ‚Šใ€popcount ใฏ $max(0, R_{i} - 2^{i})$ ๅ€‹ใงใ‚ใ‚‹ใ€‚

ใฉใ†ใ‚„ใ‚‰ๅฐ‘ใ—้–“้•ใˆใฆใ‚‚้€šใฃใฆใ—ใพใ†ๅ…ฅๅŠ›ไพ‹ใฐใ‹ใ‚Š็”จๆ„ใ•ใ‚ŒใŸใฟใŸใ„ใงใ‚ใ‚‹ใ€‚ๆ•ดๆ•ฐใ‚ชใƒผใƒใƒ•ใƒญใƒผใฎๅฏพๅ‡ฆใ‚’้–“้•ใˆใŸไธŠใ€undoใ‚’้€ฃๆ‰“ใ—ใŸๅพŒใซๆ›ธใ„ใŸใ‚ณใƒผใƒ‰ใง / ใจ % ใ‚’้–“้•ใˆใŸใ“ใจใซๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใฎใ‚‚็—›ใ‹ใฃใŸใ€‚ifใƒ–ใƒญใƒƒใ‚ฏใซ {} ใ‚‚ใ‚คใƒณใƒ‡ใƒณใƒˆใ‚‚็„กใ„ใ€ไฝ™่ฃ•ใŒ็„กใ•้ŽใŽใ‚‹็”Ÿใ€…ใ—ใ„ใ‚ณใƒผใƒ‰ใงACใ—ใŸใ€‚ใใ‚Œใ„ใซๅฎŸ่ฃ…ใ—็›ดใ™ใจ ใ“ใ† ใชใ‚‹ใ€‚

Rubyใงไปปๆ„็ฒพๅบฆๆ•ดๆ•ฐใ‚’ใคใ‹ใˆใฐ็ฐกๆฝ”ใซ ๆ›ธใ‘ใ‚‹ ใ€‚ๅ…ฌๅผ่งฃ่ชฌ3ใจใปใผๅŒใ˜ใงใ‚ใ‚‹ใ€‚

ABC 356-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅนณๆ–นๅˆ†ๅ‰ฒใŒไฝ™่จˆใ ใฃใŸใ€‚

$A_i \leq 10^{6}$ ใ‹ใ‚‰ใ€ $\sum$ ใฎไธญใ‚’ $10^{3}$ ไปฅไธŠใจไปฅไธ‹ใงๅˆ†ใ‘ใ‚Œใฐ่จˆ็ฎ—้‡ใŒๆธ›ใ‚‹ใฎใงใฏใจๆ€ใฃใฆใ—ใพใฃใŸใฎใ ใŒใ€ๅ˜ใซ่ชฟๅ’Œ็ดšๆ•ฐใ ใ‘ใง่จˆ็ฎ—้‡ใ‚’็ตžใ‚ŒใŸใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซๅ…ฌๅผ่งฃ่ชฌใ‚’ใกใ‚‰ใฃใจ่ฆ‹ใฆๅŸบๆœฌๆ–น้‡ใฏใ‚ใฃใฆใใ†ใ ใจๆ€ใ„ใ€ๅฎŸ้š›ใ‚ใฃใฆใ„ใŸใฎใง่งฃใ‘ใ‚‹ๅ•้กŒใ‚’่ฝใจใ—ใฆใ—ใพใฃใŸใ‚ˆใ†ใงใ‚ใ‚‹ใ€‚่จ€ใ„่จณใซใ—ใ‹ใชใ‚‰ใชใ„ใŒใ€Dๅ•้กŒใฎใใŸใใ ใงๆถˆ่€—ใ—ใใฃใฆใ„ใŸใจใ—ใ‹ๆ€ใˆใชใ„ใ€‚

็ทๅ’Œใ‚’ๅ–ใ‚‹ใฎใซ้ †ๅบใซๆ„ๅ‘ณใฏ็„กใ„ใฎใงใ€ $A$ ใ‚’ๆ˜‡้ †ใซไธฆในๆ›ฟใˆใ‚‹ใ€‚ใใฎไธŠใงใ€ $1 \leq i \leq 10^{6}$ ใซใคใ„ใฆ $A_i$ ใŒไฝ•ๅ›žๅ‡บ็พใ™ใ‚‹ใ‹ $cnt(A_i)$ ใ‚’ๆ•ฐใˆใฆ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚‹ใ€‚

$\sum$ ใฎไธญ $m = \lfloor max(A_j)/max(A_i) \rfloor : j &gt; i$ ใ‚’ใ€ $m = 1..10^{6}$ ใซใคใ„ใฆใพใจใ‚ใ‚Œใฐใ„ใ„ใ€‚ $m &gt; 1$ ใซใคใ„ใฆใ€ $A_i$ ใ‚’ๅ›บๅฎšใ—ใŸใจใใซ $m = \lfloor max(A_j)/max(A_i) \rfloor$ ใ‚’ๆบ€ใŸใ™ $A_j$ ใฏใ€ๅŒบ้–“ $[m \times A_{i}, (m+1) \times A_{i})$ ใงใ‚ใ‚‹ใ€‚ใ“ใฎๅŒบ้–“ใซใ‚ใ‚‹ $A_j$ ใฎๆ•ฐใฏๅ…ˆใฎ็ดฏ็ฉๅ’Œใ‹ใ‚‰ๅˆ†ใ‹ใ‚‹ใฎใงใ€ใ“ใ‚Œใซ $m \times cnt(A_i)$ ใ‚’ๆŽ›ใ‘ใŸใ‚‚ใฎใ‚’่ถณใ™ใ€‚ $m$ ใซๅๆฏ”ไพ‹ใ—ใฆๅŒบ้–“ใฎๆ•ฐใŒๆธ›ใ‚‹ใฎใงใ€่จˆ็ฎ—้‡ใฏ่ชฟๅ’Œ็ดšๆ•ฐใซใชใ‚ŠTLEใ—ใชใ„ใ€‚

$m = 1$ ใฎๅ ดๅˆใฏ $A_i$ ่‡ช่บซใŒใ‚ใ‚‹ใฎใง็‰นๅˆฅๆ‰ฑใ„ใ™ใ‚‹ใ€‚ใพใš $A_i$ ่‡ช่บซใซใคใ„ใฆใ€ $cnt(A_i) \times (cnt(A_i) - 1) / 2$ ใงใ‚ใ‚‹ใ€‚ $A_i$ ่‡ช่บซไปฅๅค–ใฏ $[A_{i} + 1, 2 \times A_{i})$ ใชใฎใงใ€ใ“ใ‚Œใซ $1 \times cnt(A_i)$ ใ‚’ๆŽ›ใ‘ใŸใ‚‚ใฎใ‚’่ถณใ™ใ€‚ไปฅไธŠใฎ็ทๅ’Œใง็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚

ABC 357-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ33ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซEๅ•้กŒใ‚’่งฃใ„ใŸใ€‚ๅ…ˆ้€ฑๅŒๆง˜ใ€Dๅ•้กŒใฎๅฎŸ่ฃ…ใŒๅˆใ‚ใšใซๆ™‚้–“ใ‚’ๆบถใ‹ใ—ใ€Eๅ•้กŒใ‚‚ใƒ‡ใƒใƒƒใ‚ฐใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใฆใ‚ณใƒณใƒ†ใ‚นใƒˆใฎ็ท ใ‚ๅˆ‡ใ‚Šใซใฏ้–“ใซๅˆใ‚ใชใ‹ใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡ใ‚’ๆญฃ็ขบใซๅฎŸ่ฃ…ใ™ใ‚Œใฐใ„ใ„ใฎใ ใŒใ€ๆญฃ็ขบใซใ™ใ‚‹ใฎใŒๅคงๅค‰ใงใ‚ใ‚‹ใ€‚

  • $M \leq H_i$ ใชใ‚‰ๆถˆๆฏ’ๅฏ่ƒฝใ€ใใ†ใงใชใ‘ใ‚Œใฐๆถˆๆฏ’ไธๅฏ่ƒฝ
  • ๆถˆๆฏ’ๅฏ่ƒฝใ‹ใฉใ†ใ‹ใซ้–ขใ‚ใ‚‰ใš $M := M - H_i$ ใจๆ›ดๆ–ฐใ™ใ‚‹

ABC 357-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡ใ‚’ๆญฃ็ขบใซๅฎŸ่ฃ…ใ™ใ‚Œใฐใ„ใ„ใ€‚ std::toupper(c) ใฏๅคงๆ–‡ๅญ—ใ‚’ๅคงๆ–‡ๅญ—ใฎใพใพๅค‰ใˆใชใ„ใ€‚ std::tolower(c) ใ‚‚ๅฐๆ–‡ๅญ—ใ‚’ๅฐๆ–‡ๅญ—ใฎใพใพๅค‰ใˆใชใ„ใ€‚

ABC 357-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ†ๅธฐใงๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚ใƒฌใƒ™ใƒซ $i$ ใŒๆฑบใพใ‚Œใฐๅน… $3^i$ ใฎๆจกๆง˜ใŒๆฑบใพใ‚‹ใฎใงใ€้ซ˜ใ„ใƒฌใƒ™ใƒซใ‹ใ‚‰9ๅˆ†ๅ‰ฒใ—ใฆใ€ใ‚ฐใƒชใƒƒใƒ‰ใฎXๅบงๆจ™ใ€Yๅบงๆจ™ใ€ใƒฌใƒ™ใƒซ $i-1$ ใ‚’ๅ†ๅธฐ็š„ใซๆฑ‚ใ‚ใ‚Œใฐๆใ‘ใ‚‹ใ€‚

ABC 357-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$N$ ใฎๆกๆ•ฐใ‚’ $W$ ใจใ™ใ‚‹ใ€‚ๆฑ‚ใ‚ใ‚‹็ญ”ใˆใฏ $S= N + N 10^{W} + N 10^{2W} + ... + N 10^{W(N-1)}$ ใคใพใ‚Š $S = N \sum_{i=0}^{N-1} 10^{iW}$ ใงใ‚ใ‚‹ใ€‚็ญ‰ๆฏ”็ดšๆ•ฐใฎๅ…ฌๅผใ‚ˆใ‚Š $S = N (10^{NW} - 1) / (10^{W} - 1)$ ใงใ‚ใ‚‹ใ€‚ๅˆ†ๆฏใฏ $W$ ๆฌก็ฌฌใชใฎใ ใŒใ€ไฝ•ใ‚’ๆ€ใฃใŸใ‹ $9$ ใซๆฑบใ‚ๆ‰“ใกใ—ใฆใ—ใพใ„ใ€ไธ‰ๅๆ•ฐๅˆ†ๆบถใ‹ใ—ใŸใ€‚ๅ…ˆ้€ฑ(356-D)ใฎ่ชคใ‚Šใ‹ใ‚‰ใพใŸๅ‰ฐไฝ™่จˆ็ฎ—ใ‚’้–“้•ใˆใŸใ‹ใจๆ€ใ„ใ€่ฆ‹ๅฝ“้•ใ„ใฎใƒ‡ใƒใƒƒใ‚ฐใ‚’ใ—ใŸใฎใŒ็—›ใ‹ใฃใŸใ€‚

็ญ‰ๆฏ”็ดšๆ•ฐใฎๅ…ฌๅผใฏ่กŒๅˆ—ใ‚’ใƒ€ใƒ–ใƒชใƒณใ‚ฐใ™ใ‚‹ใจ้ซ˜้€Ÿใซๆฑ‚ใพใ‚‹ใ€‚ใจใฏใ„ใˆใ€ๅ…ฌๅผ่งฃ่ชฌใจไธ‹่จ˜ใ‚’่ชญใ‚ใฐๅˆ†ใ‹ใ‚‹้€šใ‚Šใ“ใ“ใพใงใ™ใ‚‹ๅฟ…่ฆใฏใชใใ€่กŒๅˆ—ใฎไฝฟใ„ๆ–นใ‚’ๆ€ใ„ๅ‡บใ™ใฎใซ10ๅˆ†ๆŽ›ใ‹ใฃใŸใฎใ‚‚็—›ใ‹ใฃใŸใ€‚ๅฎŸใ‚’่จ€ใ†ใจ่กŒๅˆ—ใ‚’ไฝฟใ†ใฎใฏๅ‰ฐไฝ™ใซๅฏพใ—ใฆ้€†ๅ…ƒใ‚’ๅฎš็พฉใงใใชใ„ใจใใงใ‚ใฃใฆใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆๅ‡บใ—ใŸๆ–นๆณ•ใงใฏๆ„ๅ‘ณใŒ็„กใ„ใ€‚ๆญฃใ—ใใฏ ABC 293-E ใจๅŒๆง˜ใซ ใ“ใ† ไฝฟใ†ใ€‚

ACLใฎModintใฎ pow ใฏ long long ใ‚’ๅผ•ๆ•ฐใซๅ–ใ‚‹ใฎใงใ€ๅฎŸใฏใ“ใ†ๆ›ธใ‘ใ‚‹ใ€‚ int ใ ใจๆ€ใ„่พผใ‚“ใงใ„ใฆๅ‘จใ‚Š้“ใ‚’ใ—ใŸใ€‚ใƒฉใ‚คใƒ–ใƒฉใƒชใฎไป•ๆง˜ใ‚’ใ‚ˆใ็ŸฅใฃใฆใŠใใ“ใจใ‚‚้‡่ฆใงใ‚ใ‚‹ใ€‚

void solve(std::istream& is, std::ostream& os) {
    Num n {0};
    is >> n;
    Num w = std::to_string(n).size();
    ModInt base = ModInt(10).pow(w);
    ModInt p = base.pow(n) - 1;
    p *= n;
    ModInt q = base - 1;
    p /= q;
    os << p.val() << "\n";
}

ABC 357-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Dๅ•้กŒใŒๆ—ฉ่งฃใใงใใฆใ„ใ‚ŒใฐใŽใ‚ŠใŽใ‚Š้–“ใซๅˆใฃใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ใ€‚ใ‚„ใฏใ‚Šๅบ็›คใฎๆ—ฉ่งฃใๅŠ›ใŒใชใ„ใจใ€ๆœ€ๅพŒใฎไธ€ๅ•ใŒ็ฒใ‚Œใชใ„ใ€‚

ใ™ในใฆใฎ้ ‚็‚นใฎๅ‡บๆฌกๆ•ฐใŒ1ใ€ใจใ„ใ†ใฎใŒ้‡ๅคงใชๅˆถ็ด„ใงใ‚ใ‚‹ใ€‚ใ‚ตใ‚คใ‚ฏใƒซๅค–ใฎ้ ‚็‚นใ‹ใ‚‰ใŸใฉใ‚Š็€ใใฎใฏใ‚ใ‚‹ไธ€ใคใฎใ‚ตใ‚คใ‚ฏใƒซใ‹ใ€ใฉใฎใ‚ตใ‚คใ‚ฏใƒซใซใ‚‚ใŸใฉใ‚Š็€ใ‹ใชใ„ใ‹ใงใ‚ใฃใฆใ€่ค‡ๆ•ฐใฎใ‚ตใ‚คใ‚ฏใƒซใซใŸใฉใ‚Š็€ใใ“ใจใฏใชใ„ใ€‚่ค‡ๆ•ฐใฎใ‚ตใ‚คใ‚ฏใƒซใซใŸใฉใ‚Š็€ใใซใฏใ€ๅ‡บๆฌกๆ•ฐใŒ2ไปฅไธŠๅฟ…่ฆใ ใ‹ใ‚‰ใ ใ€‚ใใ‚Œใจใ€ใ‚ตใ‚คใ‚ฏใƒซใ‹ใ‚‰ๅค–ใซๅ‡บใ‚‹ใ“ใจใ‚‚ใงใใชใ„(ใ“ใ‚Œใ‚‚ๅ‡บๆฌกๆ•ฐใŒ2ไปฅไธŠๅฟ…่ฆใ ใ‹ใ‚‰)ใ€‚

ใ‚ˆใฃใฆๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’้€†ใซใŸใฉใฃใฆใ€2้ ‚็‚นไปฅไธŠใ‹ใ‚‰ๆˆใ‚‹ใ‚ตใ‚คใ‚ฏใƒซใซใŸใฉใ‚Š็€ใใ‹ใฉใ†ใ‹ใ‚’่ชฟในใ‚‹ใ€‚

  • ่‡ชๅทฑใƒซใƒผใƒ—ใฏใ„ใฃใŸใ‚“็„ก่ฆ–ใ™ใ‚‹
  • ใ‚ตใ‚คใ‚ฏใƒซใซใ‚ใ‚‹้ ‚็‚นใซใคใ„ใฆใฏใ€ใ‚ตใ‚คใ‚ฏใƒซใ‚’ๆง‹ๆˆใ™ใ‚‹้ ‚็‚นๆ•ฐใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚SCCใงๆฑ‚ใพใ‚‹ใ€‚
  • ใ‚ตใ‚คใ‚ฏใƒซใฎๅ„็‚นใ‹ใ‚‰ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’้€†ใซๆœจใซใŸใฉใ‚‹DFSใงใ€ใ‚ตใ‚คใ‚ฏใƒซใฎ้ ‚็‚นๆ•ฐ+ใ‚ตใ‚คใ‚ฏใƒซใ‹ใ‚‰็”Ÿใˆใฆใ‚‹ๆžใฎ้ ‚็‚นๆ•ฐใ‚’ๆ•ฐใˆใ‚‹ใ€‚ใ‚ตใ‚คใ‚ฏใƒซใ‹ใ‚‰1ๆ‰‹้›ขใ‚Œใ‚‹ใ”ใจใซ1่ถณใ›ใฐใ‚ˆใ„ใ€‚ใ‚ตใ‚คใ‚ฏใƒซใพใงใฎ่ท้›ขใจ่จ€ใ„ๆ›ใˆใฆใ‚‚ใ‚ˆใ„ใ€‚

ๆฎ‹ใ‚Šใฏ2้ ‚็‚นไปฅไธŠใ‹ใ‚‰ๆˆใ‚‹ใ‚ตใ‚คใ‚ฏใƒซใจใ€2้ ‚็‚นไปฅไธŠใ‹ใ‚‰ๆˆใ‚‹ใ‚ตใ‚คใ‚ฏใƒซใซใŸใฉใ‚Š็€ใ้ ‚็‚นไปฅๅค–ใ‚’่ชฟในใ‚‹ใ€‚ใ“ใ‚Œใฏๅ‡บๆฌกๆ•ฐใŒ0ใฎ้ ‚็‚นใ‚’ใ€1้ ‚็‚นใ‹ใ‚‰ๆˆใ‚‹ใ‚ตใ‚คใ‚ฏใƒซ=่‡ชๅทฑใƒซใƒผใƒ—ใจใ—ใฆๅŒๆง˜ใซ่งฃใ‘ใ‚‹ใ€‚

ไธŠ่จ˜ใ‚’ใพใจใ‚ใ‚‹ใจ็ฐกๆฝ”ใซ ๆ›ธใ‘ใ‚‹ ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใซใฏใ€Functional Graph ใฏ้€ฃ็ตๆˆๅˆ†ใซ้–‰่ทฏใŒไธ€ใคใ ใ‘ๅญ˜ๅœจใ™ใ‚‹ใจๆ›ธใ„ใฆใ‚ใ‚‹ใ€‚ใจใ„ใ†ใ‚ˆใ‚Šๅ•้กŒๅใ ใฃใŸใ€‚ใ“ใฎใ“ใจใฏๅˆ†ใ‹ใฃใฆใ„ใŸใฎใ ใŒใ€ใƒ‡ใƒใƒƒใ‚ฐใซ71ๅˆ†21็ง’ใ‚‚ๆŽ›ใ‹ใฃใฆใ—ใพใฃใŸใ€‚

ABC 358-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ34ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงhighestๆ›ดๆ–ฐใงใ‚ใ‚‹ใ€‚F,Gๅ•้กŒใ‚’่งฃใๆ™‚้–“ใŒไธญ้€”ๅŠ็ซฏใซใ‚ใ‚Šใ‚ณใƒณใƒ†ใ‚นใƒˆใซใฏ้–“ใซๅˆใ‚ใชใ‹ใฃใŸใŒใ€็ฟŒๆ—ฅไปฅ้™ใซ่งฃใ‘ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Šๆญฃ็ขบใซๅ…ฅๅŠ›ใ™ใ‚‹ใ€‚

ABC 358-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

็›ดๅ‰ใฎไบบใ‚’ๆ™‚ๅˆป $t$ ใซๅ‡ฆ็†ใ—ใŸใจใ™ใ‚‹ใ€‚ๅˆๆœŸๅ€คใคใพใ‚Š1ไบบ็›ฎใŒๆฅใ‚‹ๅ‰ใฏ $t = - \infty$ ใจใ™ใ‚‹ใ€‚ $i$ ไบบ็›ฎใŒ $T_i$ ใซๅˆฐ็€ใ—ใŸใจใใ€

  • $t \leq T_i$ ใชใ‚‰ๅณๆ™‚ใซใƒใ‚ฑใƒƒใƒˆใ‚’่ณผๅ…ฅใ—ใฆ $t := T_i + A$ ใซใชใ‚‹
  • $t &gt; T_i$ ใชใ‚‰ๆ™‚ๅˆป $t$ ใซใชใ‚‹ใฎใ‚’ๅพ…ใฃใฆใƒใ‚ฑใƒƒใƒˆใ‚’่ณผๅ…ฅใ— $t := t + A$ ใซใชใ‚‹

ใ“ใ‚Œใ‚‰ใ‚’ใพใจใ‚ใ‚‹ใจใ€ๆ›ดๆ–ฐๅผใฏ $t := max(t, T_i) + A$ ใงใ‚ใ‚‹ใ€‚

ABC 358-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$1..N$ ใซใคใ„ใฆใ€ $2^N$ ้€šใ‚Šใฎ็ทๅฝ“ใŸใ‚Šใงๆฑ‚ใ‚ใ‚‹ใ€‚ std::bitset::count() ใŒๅฝน็ซ‹ใคใ€‚

ABC 358-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไพกๆ ผใจใŠ่“ๅญใฎๆ•ฐใŒๅŒใ˜ใชใฎใงไธ€ๆ‰‹้–“็œใ‘ใ‚‹ใ€‚

ใŠ่“ๅญใ‚’ $B_i$ ๅ€‹ๆฌฒใ—ใŒใฃใฆใ„ใ‚‹ไบบใซใฏใ€ๅฏ่ƒฝใช้™ใ‚Š $B_i \leq A_j$ ใ‚’ๆบ€ใŸใ™ๆœ€ๅฐใฎ $A_j$ ใช็ฎฑใ‚’ๆธกใ›ใฐใ‚ˆใ„ใ€‚ใ‚ˆใฃใฆ $A$, $B$ ใ‚’ใใ‚Œใžใ‚Œๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆใ€ๅฐใ•ใชๆ•ฐใ‹ใ‚‰ใƒžใƒƒใƒใƒณใ‚ฐใ—ใฆใ„ใ‘ใฐใ„ใ„ใ€‚ใƒžใƒƒใƒใƒณใ‚ฐใŒๆˆ็ซ‹ใ—ใชใ‹ใฃใŸใ‚‰่งฃใชใ—ใชใฎใง -1 ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ใ‚ˆใ‚Šๅ…ทไฝ“็š„ใซใฏ $B_i : i=1..M$ ใซใคใ„ใฆใ€ๅฐบๅ–ใ‚Šๆณ•ใงไปฅไธ‹ใฎใ‚ˆใ†ใซ่งฃใใ€‚ไปŠใพใง้ฟใ‘ใฆใ„ใŸๅฐบๅ–ใ‚Šๆณ•ใŒใ€ไปŠๅ›žใฏใฐใฃใกใ‚ŠๅฎŸ่ฃ…ใงใใŸใ€‚

  • $A_j$ ใฎๆทปใˆๅญ—ใ‚’ $j = 1$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹
  • $B_i \leq A_j$ ใชใ‚‰ $(B_i, A_j)$ ใ‚’ใƒžใƒƒใƒใƒณใ‚ฐใ—ใฆใ€ $i$ ใจ $j$ ใ‚’ใใ‚Œใžใ‚Œ1ๅข—ใ‚„ใ™
  • $B_i &gt; A_j$ ใชใ‚‰ $i$ ใ‚’1ๅข—ใ‚„ใ™
  • $i &gt; N$ ใชใ‚‰ใƒžใƒƒใƒใƒณใ‚ฐใงใใชใ„

ใ“ใฎ่ฒชๆฌฒๆณ•ใฎๆญฃๅฝ“ๆ€งใฏๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹ใ€‚ๅฐบๅ–ใ‚Šๆณ•ใ‚’ไฝฟใ†ใ“ใจใ‚‚ๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹ใ€‚

ABC 358-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่จˆ็ฎ—้‡ใ‚’ไธ‹ใ’ใ‚‹ใฎใซ่‹ฆๅŠดใ—ใŸใ€‚

ๆ–‡ๅญ— $a_{1} .. a_{i}$ ใ‹ใ‚‰ๆˆใ‚‹้•ทใ• $L_i$ ใฎๆ–‡ๅญ—ๅˆ—ใŒใ‚ใ‚‹ใจใใ€ $a_{i+1}$ ใ‚’ $j \geq 0$ ๆ–‡ๅญ—ๅทฎใ—่พผใ‚€ๆ–นๆณ•ใฏไฝ•้€šใ‚Šใ‚ใ‚‹ใ‹่€ƒใˆใ‚‹ใ€‚ใ“ใ‚Œใฏ้•ทใ• $L_i + j$ ๆ–‡ๅญ—ใฎๆ–‡ๅญ—ๅˆ—ใซใŠใ„ใฆใ€ $j$ ๆ–‡ๅญ—ใฎ $a_{i+1}$ ใ‚’ๅŒบๅˆฅใ›ใšใซ้…็ฝฎใ™ใ‚‹ๅ ดๆ‰€ใŒไฝ•้€šใ‚Šใ‚ใ‚‹ใ‹ใงใ‚ใ‚‹ใ€‚

ใ“ใ‚Œใ‚’ๅŸบใซDPใ‚’่€ƒใˆใ‚‹ใ€‚

  • $DP[i][from]$ ใฏใ€ $a_i$ ๆ–‡ๅญ—ใพใงไฝฟใฃใฆ $0 \leq from \leq K$ ๆ–‡ๅญ—ใ‹ใ‚‰ๆˆใ‚‹ๆ–‡ๅญ—ๅˆ—ใ‚’ไฝœใ‚‹ๆ–นๆณ•ใŒไฝ•้€šใ‚Šใ‚ใ‚‹ใ‹็คบใ™
  • ๅˆๆœŸๅ€คใฏ $DP[0][0]=1$ , $DP[0][from]=0 : from &gt; 0$ ใงใ‚ใ‚‹
  • $a_i$ ใ‚’ $j = 0..C_i$ ๆ–‡ๅญ—่ฟฝๅŠ ใ™ใ‚‹
    • ่ฟฝๅŠ ใ—ใŸๅพŒใฏ $from + j$ ๆ–‡ๅญ—ใซใชใ‚‹
    • ่ฟฝๅŠ ใ™ใ‚‹ๅ‰ใฏ $DP[i][from]$ ้€šใ‚Šใ€่ฟฝๅŠ ใ™ใ‚‹ๆ–นๆณ• $C_i \choose j$ ้€šใ‚Šใ‚ใ‚Šใ€ใ“ใ‚Œใ‚‰ใฎ็ฉใ‚’ $DP[i+1][from+j]$ ใซ่ถณใ™
  • ๆœ€็ต‚็š„ใซ $DP[26][1..K]$ ใฎๅ’ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

$O(K^2)$ ่งฃๆณ•ใ‚’่ฆ‹ใคใ‘ใฆๅ…ฅๅŠ›ไพ‹ใŒ้€šใฃใŸใฎใงใ€ใใ‚ŒไปฅไธŠๆคœ่จผใ›ใšๆๅ‡บใ—ใŸใ‚‰ACใ—ใŸใ€‚ไปŠๅ›žใฏDๅ•้กŒใพใงๆณฅๆฒผใซใชใ‚‰ใšใ€ๅฎŸ่ฃ…ใซใฏ่‡ชไฟกใŒใ‚ใฃใŸใฎใงใ•ใใฃใจ้€šใ—ใŸใ€‚ใ‚ˆใ†ใ‚„ใADTใฎๆˆๆžœใŒๅ‡บใฆใใŸใฎใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

ๆœ€ๅˆใซ่€ƒใˆใŸใฎใฏใ€ $O(K^3)$ ่งฃๆณ•ใงใ‚ใ‚‹ใ€‚ใ“ใฎใพใพใ ใจTLEใ™ใ‚‹ใฎใงๆญฃ่งฃใฎๆ–นๆณ•ใ‚’ๆ€ใ„ใคใ„ใŸใ€‚ใใ“ใพใงใซใ€็ดฏ็ฉๅ’Œใ‚’ไฝฟใˆใชใ„ใ‹ใจใ‹ใ€ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ‚‰ใชใ„ใ‹ใจใ‹ใ€nulๆ–‡ๅญ—ใ‚’ๅฐŽๅ…ฅใ—ใฆ27็จฎ้กžใซใ—ใฆๆ–‡ๅญ—ใฎ้•ทใ•ใ‚’ $K$ ใซๅ›บๅฎšใ™ใ‚‹ใจใ‹ใ€ๅ…ฌๅผ่งฃ่ชฌ2ใฎๆ–นๆณ•ใจใ‹ใ€่‰ฒใ€…ใจๅ‘จใ‚Š้“ใ‚’ใ—ใŸใ€‚็ตๅฑ€58ๅˆ†ๆŽ›ใ‹ใ‚Š(Fๅ•้กŒใ‚’่ชญใ‚“ใงๅฐ‘ใ—่€ƒใˆใŸๆ™‚้–“ใ‚’ๅซใ‚€)ใ€ๅ‘จใ‚Š้“ใŒ็„กใ‘ใ‚Œใฐใ‚‚ใ†20ๅˆ†ใใ‚‰ใ„ๆ—ฉใ่งฃใ‘ใŸใฎใ ใŒใ€ใ„ใใชใ‚Šๆญฃ่งฃใซใŸใฉใ‚Š็€ใใซใฏใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ๅŠ›ใŒ่ถณใ‚Šใชใ„ใ€‚ใใ—ใฆF,Gๅ•้กŒใ‚’่งฃใๆ™‚้–“ใฏ24ๅˆ†ใ—ใ‹ๆฎ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

ABC 358-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใคใ„ใซ็งใ‚‚้ป„diffใ‚’่‡ชๅŠ›ACใงใใŸใ€‚100ๅˆ†ใกใ‚‡ใฃใจๆŽ›ใ‹ใฃใŸใฎใงใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆใซใฏๅˆฐๅบ•้–“ใซๅˆใ‚ใชใ‹ใฃใŸใŒใ€‚

ๅ…ฌๅผ่งฃ่ชฌใจๅŒใ˜็ตŒ่ทฏใ‚’ๆ€ใ„ใคใ„ใŸใ€‚่‡ชๅˆ†ใฎ่จ€่‘‰ใง่จ€ใ„็›ดใ™ใจไปฅไธ‹ใฎ้€šใ‚Šใงใ‚ใ‚‹ใ€‚

ๆœ€ๅˆใซใ‚นใ‚ฟใƒผใƒˆใ‹ใ‚‰ใ‚ดใƒผใƒซใธ $N$ ใƒžใ‚นใ‚’้€šใ‚‹ไธ€ๆœฌ้“ใ‚’่€ƒใˆใ‚‹ใ€‚ $K &lt; N$ ใชใ‚‰ใ‚ดใƒผใƒซใซๅฑŠใ‹ใชใ„ใฎใง็ญ”ใˆใฏ No ใงใ‚ใ‚‹ใ€‚

ใ“ใ“ใ‹ใ‚‰ใฉใ‚Œใ ใ‘่ฟ‚ๅ›žใงใใ‚‹ใ‹ใ‚’่€ƒใˆใ‚‹ใ€‚ๅทฆๅณๆ–นๅ‘ใซ่ฟ‚ๅ›žใ—ใฆใ‚‚ใ€ไธŠไธ‹ใซ่ฟ‚ๅ›žใ—ใฆใ‚‚ใ€่กŒใฃใฆๆˆปใ‚‹ใฎใง่ฟ‚ๅ›ž่ทฏใฎ้•ทใ•ใฏๅถๆ•ฐใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ $K - N$ ใŒๅฅ‡ๆ•ฐใชใ‚‰่ฟ‚ๅ›ž่ทฏใ‚’ๆง‹ๆˆใงใใชใ„ใฎใง็ญ”ใˆใฏ No ใงใ‚ใ‚‹ใ€‚

ๅพŒใฏ่ฟ‚ๅ›ž่ทฏใ‚’ๅฎŸ้š›ใซๆง‹ๆˆใ™ใ‚‹ใ€‚่ฟ‚ๅ›žใ—ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ๅ›žๆ•ฐใฏ $D = (K - N) / 2$ ๅฏพใงใ‚ใ‚‹ใ€‚

  • $N$ ใŒๅถๆ•ฐใชใ‚‰ใ€2่กŒใšใคไฝฟใฃใฆใ€ๅทฆใซ่ฟ‚ๅ›žใ€ไธ‹ใ€ๅณใซ่ฟ‚ๅ›žใ‚’่กŒใ†ใ€‚ๅทฆๅณใ‚’ $D$ ๅฏพไฝœใ‚Œใฐใ„ใ„ใ€‚
  • $N$ ใŒๅฅ‡ๆ•ฐใชใ‚‰ใ€ $N-3$ ่กŒ็›ฎใพใงใฏไธŠ่จ˜ใจๅŒๆง˜ใซใ€ๅทฆใซ่ฟ‚ๅ›žใ€ไธ‹ใ€ๅณใซ่ฟ‚ๅ›žใ‚’่กŒใ†ใ€‚ๆฎ‹ใ‚Šใฏ $R = D - (M-1)((N - 3) / 2)$ ๅฏพใงใ‚ใ‚‹ใ€‚ $R \leq (M-1)$ ใชใ‚‰ใ€ใ“ใ‚ŒใพใงใจๅŒๆง˜ใซๅทฆๅณใซ่ฟ‚ๅ›žใ™ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐ $R - (M-1)$ ๅฏพใ ใ‘ใ€ไธ‹ใ‹ใ‚‰1,2่กŒ็›ฎใงไธŠไธ‹ใซ่ฟ‚ๅ›žใ™ใ‚‹ใ€‚ๆœ€ๅพŒใซๅณไธ‹ใ‚’ใ‚ดใƒผใƒซใซๆŽฅ็ถšใ™ใ‚‹ใ€‚

ABC 358-G

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใฏๆฎ‹ใ‚Š24ๅˆ†ใง่งฃใใ“ใจใŒใงใใšใ€็ฟŒๆœ่‡ชๅŠ›ACใ—ใŸใ€‚ๆ—ฉใ5ๅฎŒใ—ใชใ„ใจใ€6ๅ•็›ฎใ‚’่งฃใๆ™‚้–“ใŒ่ถณใ‚Šใชใ„ใ€‚

ใ–ใฃใใ‚Šใจใ—ใŸไบˆๆƒณใจใ—ใฆใ€ $K$ ใŒใจใฆใ‚‚ๅคงใใ‘ใ‚Œใฐใ€ $M=max(A_{i,j})$ ใ‚’ๆบ€ใŸใ™ $A_{i,j}$ ใซ็•™ใพใ‚‹ใฎใŒ่งฃใ‚’ๆœ€ๅคงๅŒ–ใ™ใ‚‹ใจไบˆๆƒณใงใใ‚‹ใ€‚ๅ€คใŒ $M$ ใชใ‚‹ $A$ ใŒ่ค‡ๆ•ฐใ‚ใ‚Œใฐใ€ๆ—ฉใใใ“ใซใŸใฉใ‚Š็€ใ‘ใฐใ„ใ„ใจไบˆๆƒณใงใใ‚‹ใ€‚ๅ•้กŒใฏ $K$ ใŒๅฐใ•ใ„ๆ™‚ใงใ€ $A_{i,j}$ ใซใŸใฉใ‚Š็€ใ‹ใšใซใ€็ตŒ่ทฏใฎ $A$ ใŒๆœ€ๅคงใซใชใ‚‹ๅฑ€ๆ‰€่งฃใ‚’ๆ‹พใฃใŸๆ–นใŒใ‚ˆใ•ใใ†ใงใ‚ใ‚‹ใ€‚

ใ“ใ‚Œใ‚’ๅŸบใซDPใ‚’่€ƒใˆใ‚‹ใ€‚

  • $DP[s][y,x]$ ใฏใƒžใ‚น $(y,x)$ ใซใƒžใ‚น $(S_i,S_j)$ ใ‹ใ‚‰ $s$ ๅ›žใฎ็งปๅ‹•ใงใŸใฉใ‚Š็€ใใจใใฎใ€ใใ‚Œใพใงใซๅพ—ใŸๆฅฝใ—ใ•ใฎๅˆ่จˆใจใ™ใ‚‹ใ€‚
  • $DP[0][S_i,S_j] = 0$, $DP[0][y,x] = - \infty : (y,x) \neq (S_i,S_j)$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹
  • ็ธฆ(่กŒ)ๆ–นๅ‘ใซ $dy$ , ๆจช(ๅˆ—)ๆ–นๅ‘ใซ $dx$ ็งปๅ‹•ใ™ใ‚‹ใจใ—ใฆใ€ $DP[s+1][y+dy,x+dx] = max(DP[s+1][y+dy,x+dx], DP[s][y,x] + A_{y+dy,x+dx})$ ใงๆ›ดๆ–ฐใ™ใ‚‹ใ€‚่ฆใ™ใ‚‹ใซ็งปๅ‹•ๅ…ˆใฎๆฅฝใ—ใ•ใ‚’่ถณใ—ใฆใ€ๆฅฝใ—ใ•ใฎๅˆ่จˆใ‚’ๆœ€ๅคงๅŒ–ใ™ใ‚‹ใ€‚ๅŒไธ€ใฎใƒžใ‚นใซ็•™ใพใ‚‹ใ“ใจใฏใพใ ่€ƒใˆใชใ„ใ€‚
  • ใ“ใ‚Œใ‚’ $0 \leq s \leq HW$ ๅ›ž็นฐใ‚Š่ฟ”ใ™ใ€‚ใ“ใ†ใ™ใ‚ŒใฐๅŒใ˜ใƒžใ‚นใ‚’ๅฐ‘ใชใใจใ‚‚2ๅบฆ่จชใ‚Œใ‚‹ใ‚ˆใ†ใซใชใ‚‹ใ€‚

ๆœ€ๅคง $HW$ ๅ›ž็งปๅ‹•ใ—ใŸๅพŒใซใƒžใ‚น $(y,x)$ ใซๅฑ…ใ‚‹ใจใใฎๆฅฝใ—ใ•ใŒๅˆ†ใ‹ใฃใŸใฎใงใ€ $K$ ๅ›ž็งปๅ‹•ใ—ใŸใจใใฎๆฅฝใ—ใ•ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

  • $K \leq HW$ ใชใ‚‰ใ€ $DP[K][y,x]$ ใใฎใ‚‚ใฎใงใ‚ใ‚‹
  • ใƒžใ‚น $(y,x)$ ใซ็•™ใพใ‚‹ใจๆฑบใ‚ใŸๆ™‚ใซใ€ใใ“ใซใŸใฉใ‚Š็€ใใพใงใฎ็งปๅ‹•ๅ›žๆ•ฐ $s=0..min(K,HW)$ ใซใคใ„ใฆใ€ๆฅฝใ—ใ•ใฎๅˆ่จˆใฏ $DP[s][y,x] + (k - s)A_{y,x}$ ใงใ‚ใ‚‹ใ€‚ $s$ ใŒๅฐใ•ใ™ใŽใฆใƒžใ‚น $(y,x)$ ใซใŸใฉใ‚Š็€ใ‘ใชใ„ใจใใฏๆฅฝใ—ใ•ใŒ $- \infty$ ใชใฎใง็„ก่ฆ–ใงใใ‚‹ใ€‚
  • ใ“ใ‚Œใ‚’ใ™ในใฆใฎใƒžใ‚นใฎใ™ในใฆใฎ $s$ ใซใคใ„ใฆๆฑ‚ใ‚ใ‚‹ใจใ€ๅ•้กŒใฎ็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚

ใ“ใฎ่งฃๆณ•ใฏๅŸบๆœฌ็š„ใซๅ…ฌๅผ่งฃ่ชฌ1ใจๅŒใ˜ใงใ‚ใ‚‹ใ€‚ใ“ใ“ใพใงๅˆ†ใ‹ใ‚‹ใชใ‚‰ใ€24ๅˆ†ใง่งฃๆณ•ใ‚’่ฉฐใ‚ใฆๅฎŸ่ฃ…ใงใใ‚‹ใ‚ˆใ†ใซใ—ใŸใ„ใ€‚

ABC 359-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ35ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใง้ŽๅŽปๆœ€้ซ˜ใƒ‘ใƒ•ใ‚ฉใงhighestๆ›ดๆ–ฐใงใ‚ใ‚‹ใ€‚ๆœ€ๅพŒใฎ1ๅˆ†ใพใง่ซฆใ‚ใชใ„ๆ นๆ€งใŒๅฎŸใฃใŸใ€‚่งฃ็ญ”ๆ™‚้–“ใŒ 1:19-2:21-30:51-28:26-33:54 ใจใปใผ30ๅˆ†้–“้š”ใงใ€A,Bๅ•้กŒใฎๆ—ฉ่งฃใใŒๆดปใใŸใ€‚Fๅ•้กŒใ‚’ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซ่งฃใ„ใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚ŠๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚boolๅ€คใ‚’ๆš—้ป™ใซ0/1ใซๅค‰ๆ›ใ™ใ‚‹ใจใ‚ณใƒผใƒ‰ใŒ็Ÿญใใชใ‚‹ใ€‚

ABC 359-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่‰ฒใ‚’ๆทปใˆๅญ—ใจใ™ใ‚‹ std::vector<Vec> ps ใ‚’ไฝœใ‚Šใ€ๆทปใˆๅญ—ใซๅฏพๅฟœใ™ใ‚‹ๅ€คใซ $1..N$ ใ‚’ๅ…ฅใ‚Œใ‚‹ใ€‚ $ps[i]$ ใฎๅ€คใฎๅทฎใŒ2ใชใ‚‰ใ€่‰ฒ $i$ ใฎๆœใ‚’็€ใŸไบŒไบบใฎไบบใฎ้–“ใซใฏใกใ‚‡ใ†ใฉไธ€ไบบใ„ใ‚‹ใ€‚

ABC 359-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

WAใฎๅฑฑใ‚’็ฏ‰ใ„ใฆใ‚‚ใฎใ™ใ”ใ็„ฆใฃใŸใ€‚

็ธฆ(Yๅบงๆจ™)ๆ–นๅ‘ใฎ็งปๅ‹•ใฏใ€่ตท็‚นใ‚’ๅˆฅใจใ—ใฆๅฟ…ใš $d = |T_y - S_y|$ ๅ€‹ใฎ็•ฐใชใ‚‹ใ‚ฟใ‚คใƒซใ‚’้€šใ‚‹ใ€‚ๅ•้กŒใฏๆจช(Xๅบงๆจ™)ๆ–นๅ‘ใงใ‚ใ‚‹ใ€‚ $d$ ๅ€‹ใฎใ‚ฟใ‚คใƒซใ‚’็ธฆๆ–นๅ‘ใซ็งปๅ‹•ใ—ใŸใจใใซใ€ใใ‚Œใ‚‰ใฎใ‚ฟใ‚คใƒซใ‚’้€šใฃใฆใ„ใ‘ใ‚‹ๆœ€ๅทฆ $left$ ใจๆœ€ๅณ $right$ ใฎXๅบงๆจ™ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

  • $(S_x \oplus S_y) and 1 = 0$ ใชใ‚‰ใ€ $left = S_x - d$, $right = S_x + 1 + d$
  • $(S_x \oplus S_y) and 1 = 1$ ใชใ‚‰ใ€ $left = S_x - 1 - d$, $right = S_x + d$

$T_x$ ใซใŸใฉใ‚Š็€ใใซใฏใ€ $left$ ใ‚ˆใ‚Šๅทฆใ‹ $right$ ใซๅณใซ่กŒใไฝ™ๅˆ†ใชใ‚ณใ‚นใƒˆ $c$ ใชใฎใงใ€ไปฅไธ‹ใฎ้€šใ‚Šใงใ‚ใ‚‹ใ€‚

  • $T_x &lt; left$ ใชใ‚‰ $c = \lceil (left - T_x) /2 \rceil$
  • $right &lt; T_x$ ใชใ‚‰ $c = \lceil (T_x - right) /2 \rceil$
  • ใใ‚Œไปฅๅค–ใฏ $c=0$

็ญ”ใˆใฏ $d + c$ ใงใ‚ใ‚‹ใ€‚

ๅˆ†ใ‹ใฃใฆใ—ใพใˆใฐใใ‚Œใพใงใ ใŒใ€ $left \leq T_x \leq right$ ใชใ‚‰ $c=0$ ใงใ‚ใ‚‹ใ“ใจใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚ใใ‚Œใจๅ‰ๅ‡ฆ็†ใ‚’ใ„ใ„ๆ„Ÿใ˜ใซๅทฅๅคซใ—ใ‚ˆใ†ใจใ—ใฆใ€ๅ…ฅๅŠ›ไพ‹ใ ใ‘้€šใ‚‹ใƒใ‚ฐใ‚’ไฝœใฃใฆใ—ใพใฃใŸใ‚ˆใ†ใงใ‚ใ‚‹ใ€‚ $T_y$ ใ‚’ $S_y$ ใซๅฏพใ—ใฆๅ่ปขใ™ใ‚‹ๅฟ…่ฆใฏใชใ„ใ—( $d$ ใ ใ‘ใ‚ใ‹ใ‚Œใฐใ„ใ„ใฎใง)ใ€ $T_x$ ใ‚’ $S_x$ ใซๅฏพใ—ใฆๅ่ปขใ™ใ‚‹ๅฟ…่ฆใฏใชใ„(ใ“ใ‚Œใ‚’ใ‚„ใ‚‹ใจ้–“้•ใ„ใฎๅ…ƒใงใ‚ใ‚‹)ใ€‚ๅ…ฌๅผ่งฃ่ชฌ1ใฎใ€Œ็ฐกๅ˜ใฎใŸใ‚ใ€ใ‚นใ‚ฟใƒผใƒˆใจใ‚ดใƒผใƒซใฏใ‚ฟใ‚คใƒซใฎๅทฆๅดใซใ‚ใ‚‹ใ“ใจใซใ—ใฆใ‚ˆใ„ใงใ™ใ€ใŒๆœฌๅฝ“ใซๅฟ…่ฆใชๅ‰ๅ‡ฆ็†ใ ใฃใŸใ€‚ใ‚ใ‚‹ใ„ใฏๅ…ฌๅผ่งฃ่ชฌ2ใฎใ‚ˆใ†ใซๅ‰ๅ‡ฆ็†ใ™ในใใ ใฃใŸใ€‚

ABC 359-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$K \leq 10$ ใŒๅฆ‚ไฝ•ใซใ‚‚้ตใชใฎใงใใ“ใ‹ใ‚‰่€ƒใˆใ‚‹ใ€‚

$A,B$ ใ‚’ $0,1$ ใซ่ชญใฟๆ›ฟใˆใ€ $2^k \leq 1024$ ้€šใ‚Šใฎไธฆใณใ‚’่€ƒใˆใ‚‹ใ€‚ใ“ใ‚Œใ‚‰ใŒๅ›žๆ–‡ใ‹ใฉใ†ใ‹ใฏๅฎŸ้š›ใซ็ขบใ‹ใ‚ใ‚‹(ๅ่ปขใ—ใŸไฝ็ฝฎใฎๆ–‡ๅญ—ใŒๅ…จใฆไธ€่‡ดใ—ใชใ„ใ€ใงใ‚ใฃใฆใ€ๅ่ปขใ—ใŸไฝ็ฝฎใฎๆ–‡ๅญ—ใŒใฉใ‚Œใ‹ไธ€่‡ดใ™ใ‚‹ใ€ใงใฏใชใ„ใ€‚ใ“ใ“ใ‚’้–“้•ใˆใŸ)ใ€‚ใ“ใ‚Œใง $K$ ๆ–‡ๅญ—ใŒๅ›žๆ–‡ใ‹ใฉใ†ใ‹ๅˆ†ใ‹ใ‚‹ใ€‚

DPใฎๅˆๆœŸๅŒ–ใจใ—ใฆใ€ $S$ ใฎๆœ€ๅˆใฎ $K$ ๆ–‡ๅญ—ใซใคใ„ใฆใ€ๅ›žๆ–‡ใ‹ใฉใ†ใ‹่ชฟในใ‚‹ใ€‚ A,B ใฏใใ‚Œใžใ‚Œ $0,1$ ใฎๅฏ่ƒฝใ‚’่ชฟในใ€ ? ใฏ $0,1$ ใฎไธกๆ–นใฎๅฏ่ƒฝๆ€งใ‚’่ชฟในใ‚‹ใ€‚ $i=1..K$ ๆ–‡ๅญ—ใ‚’ใƒ“ใƒƒใƒˆ $i-1$ , ๆ•ฐๅ€ค $2^{i-1}$ ใซๅฏพๅฟœใฅใ‘ใ‚‹ใจๅพŒๅ‡ฆ็†ใŒๆฅฝใงใ‚ใ‚‹ใ€‚

ๅพŒใฏ $S$ ใฎ $i=(K+1)..N$ ๆ–‡ๅญ—ใซใคใ„ใฆDPใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใƒ‘ใ‚ฟใƒผใƒณใ‚’ไบŒ้€ฒๆ•ฐใซใ™ใ‚‹ใจใ€DPใฎ้ท็งปๅ…ƒใ‚’ไฝœใ‚‹ใจใใ€ $S$ ใฎ $i-K$ ๆ–‡ๅญ—็›ฎใ‚’ๆจใฆใ‚‹ๆ“ไฝœใ‚’ใ€1ใƒ“ใƒƒใƒˆๅณใ‚ทใƒ•ใƒˆใซๅฏพๅฟœใ•ใ›ใ‚‹(ไปฅไธ‹ใงใฏ2ใงๅ‰ฒใฃใฆไฝ™ใ‚Šใ‚’ๅˆ‡ใ‚Šๆจใฆใ‚‹ใจ่กจ่จ˜ใ™ใ‚‹)ใ€‚ $i$ ๆ–‡ๅญ—็›ฎใ‚’ๆŒฟๅ…ฅใ™ใ‚‹ๆ“ไฝœใฏใƒ“ใƒƒใƒˆ $K-1$ ใ‚’็ซ‹ใฆใ‚‹ใคใพใ‚Š $2^{K-1}$ ใ‚’่ถณใ™ใ“ใจใซๅฏพๅฟœใ•ใ›ใ‚‹ใ€‚ $DP$ ใฎใ™ในใฆใฎ่ฆ็ด  $DP[from=0..(2^{K}-1)]$ ใ‹ใ‚‰ $DP_{next}$ ใซ้ท็งปใ™ใ‚‹ใ€‚

  • $S$ ใฎ $i$ ๆ–‡ๅญ—็›ฎใŒ A ใชใ‚‰ใ€ $DP_{next}[ \lfloor from / 2 \rfloor ] += DP[ \lfloor from / 2 \rfloor]$
  • $S$ ใฎ $i$ ๆ–‡ๅญ—็›ฎใŒ B ใชใ‚‰ใ€ $DP_{next}[ 2^{K-1} + \lfloor from / 2 \rfloor ] += DP[ \lfloor from / 2 \rfloor ]$
  • $S$ ใฎ $i$ ๆ–‡ๅญ—็›ฎใŒ ? ใชใ‚‰ใ€ ไธŠ่จ˜ใฎไธกๆ–น

$S$ ใฎไธ€ๆ–‡ๅญ—ใ”ใจใซDPใ‚’ๆ›ดๆ–ฐใ—ใฆใ€ $DP$ ใฎๆ›ดๆ–ฐใŒ็ต‚ใ‚ใฃใŸๅพŒใ€ๅ›žๆ–‡ใซใชใ‚‹ $DP[i]$ ใฎใƒ‘ใ‚ฟใƒผใƒณๆ•ฐใฎๅ’ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 359-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่งฃๆณ•ใฏใ™ใๅˆ†ใ‹ใฃใŸใŒใ€ๅฎŸ่ฃ…ใ™ใ‚‹ใŸใ‚ใฎใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

ใ‚ใ‚‹ $i$ ใซใคใ„ใฆ $A_i &gt; 0$ ใŒๆˆใ‚Š็ซ‹ใฃใŸใ‚‰ไปฅๅพŒ $A_i$ ใฏๅค‰ใ‚ใ‚‰ใชใ„ใฎใงใ€ $i=1..N$ ใซใคใ„ใฆ $A_i$ ใ‚’้€ๆฌก็š„ใซๆฑ‚ใ‚ใ‚‹ใ“ใจใŒใงใใ‚‹ใ€‚

ใ‚ใ‚‹ $i$ ใซใคใ„ใฆ $H_i$ ไปฅไธŠใฎ้ซ˜ใ•ใงๅทฆใซใ‚ใ‚‹ใ€ใคใพใ‚Š $H_j \land j &lt; i$ ใ‚’ๆบ€ใŸใ™ๆฟใ‚’ๆŽขใ™ใ€‚ใ“ใ‚Œใฏ $H_i$ ใ‚’ใ‚นใ‚ฟใƒƒใ‚ฏใซ็ฉใฟใ€ $H_i$ ๆœชๆบ€ใฎๅ€คใ‚’ใ‚นใ‚ฟใƒƒใ‚ฏใฎไธŠใ‹ใ‚‰้ †ใซ้™คใ‘ใฐใ„ใ„ใ€‚

  • ใใฎใ‚ˆใ†ใชๆฟใŒใชใ‘ใ‚Œใฐ $H_i$ ใพใง็›ฎไธ€ๆฏๆณจใใฎใงใ€ๆณจใ้‡ใฏๅ…จไฝ“ใง $i \times H_i$ ใงใ‚ใ‚‹ใ€‚
  • ใใฎใ‚ˆใ†ใชๆฟใŒใ‚ใ‚Œใฐ $j$ ใ‹ใ‚‰ $i$ ใพใง้ซ˜ใ• $H_i$ ใ‚’ๆณจใใฎใงใ€ๆณจใ้‡ใฏๅ…จไฝ“ใง $A_j + (i - j) \times H_i$ ใงใ‚ใ‚‹ใ€‚

็ญ”ใˆใฏๆบขใ‚ŒใŸใจใใชใฎใงใ€ $A_i + 1$ ใงใ‚ใ‚‹ใ€‚ใ‚นใ‚ฟใƒƒใ‚ฏใฏ std::vector<std::pair<Num,Num>> ใงใ€ $(i,H_i)$ ใฎ็ต„ใ‚’ $H_i$ ใŒ้ซ˜ใ„้ †ใซไธŠใ‹ใ‚‰่ผ‰ใ›ใ‚‹ใ€‚ใ‚ณใƒผใƒ‰ใ‚’ใใ‚Œใ„ใซๆ›ธใ็›ดใ™ใจ ใ“ใฎใ‚ˆใ† ใซใชใ‚‹ใ€‚

std::set ใงไธŠๆ‰‹ใใ„ใ‹ใšใ€ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใจๅบงๆจ™ๅœง็ธฎใงไธŠๆ‰‹ใใ„ใ‹ใšใ€ๆฎ‹ใ‚Š6ๅˆ†ใงใ‚นใ‚ฟใƒƒใ‚ฏใงๅ‡ฆ็†ใงใใ‚‹ใจๅˆ†ใ‹ใฃใฆๅฎŸ่ฃ…ใ—ใŸใ‚‰ๆฎ‹ใ‚Š3ๅˆ†9็ง’ใงๆๅ‡บใงใใŸใ€‚ใ‚นใ‚ฟใƒƒใ‚ฏใซไน—ใ‚Šๆ›ใˆใ‚‹ๅฎŸ่ฃ…ใ‚’2ๅˆ†็จ‹ๅบฆใงใงใใŸใฎใงใ€ๆ—ฉ่งฃใ่จ“็ทดใŒๅŠŸใ‚’ๅฅใ—ใŸใ€‚ๅ…ฅๅŠ›ไพ‹ใŒ้€šใฃใŸใฎใงใใ‚ŒไปฅไธŠๆคœ่จผใ™ใ‚‹ไฝ™่ฃ•ใ‚‚ใชใๆๅ‡บใ—ใฆACใงใใŸใฎใฏใ€ๆ—ฉใใฆๆญฃ็ขบใชๅฎŸ่ฃ…ๅŠ›ใŒใ‚ˆใ†ใ‚„ใๅฎŸๆˆฆใงๆดปใ‹ใ›ใ‚‹ใ‚ˆใ†ใซใชใฃใŸใ‚‰ใ—ใ„ใ€‚A,Bๅ•้กŒใ‚’ๆ—ฉใ่งฃใ„ใŸใฎใงๆฎ‹ใ‚Š3ๅˆ†ใ‚’็ขบไฟใงใใŸใฎใงใ€ๅบ็›คใฎๆ—ฉ่งฃใใ‚‚ๆ„ๅ‘ณใŒใ‚ใ‚‹ใ€‚

ๅฎŸใฏใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใจๅบงๆจ™ๅœง็ธฎใง ไธŠๆ‰‹ใใ„ใ ใจๅพŒใ‹ใ‚‰็ŸฅใฃใŸใ€‚้ซ˜ใ• $H_i$ ใ‚’ๅœง็ธฎใ—ใฆ $B_i$ ใซใ—ใ€ใ‚ญใƒผใ‚’ $B_i$ , ๅ€คใ‚’ $i$ , ๅ˜ไฝๅ…ƒใ‚’0ใ€prodใ‚’่ฆ็ด ใฎๆœ€ๅคงๅ€คใซใ™ใ‚‹ใ€‚ใ“ใ†ใ™ใ‚Œใฐใ‚ใ‚‹ $i$ ใซใคใ„ใฆ $prod[B_i,N)$ ใฏ้ซ˜ใ• $H_i$ ใจใชใ‚‹ๆœ€ๅคงใฎๆฟ $j$ (ใชใ‘ใ‚Œใฐ0)ใ‚’่ฟ”ใ™ใ€‚ๆฟใฎ็•ชๅทใฏๅ•้กŒๆ–‡้€šใ‚Š1-based indexingใซใ—ใ€ไพฟๅฎœไธŠ $A_0 = 0$ ใจใ™ใ‚‹ใจใ€ๆณจใ้‡ใฏๅ…จไฝ“ใง $A_j + (i - j) \times H_i$ ใงใ‚ใ‚‹ใ€‚ๆ–น้‡ใฏใ‚ใฃใฆใ„ใŸใฎใซใ“ใฎๆ–นๆณ•ใงๆญฃ็ญ”ใงใใชใ‹ใฃใŸใฎใฏๆƒœใ—ใ„ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใฎ apply ใซ a+b ใจๆ›ธใ„ใŸใŒๆญฃ่งฃใฏ max(a,b) ใชใฎใงใ€่‡ชๅˆ†ใงใ‚‚ไฝ•ใ‚’ใ—ใŸใ„ใฎใ‹ใ‚ˆใๅˆ†ใ‹ใฃใฆใ„ใชใ‹ใฃใŸใ‚‰ใ—ใ„ใ€‚

ใ‚‚ใ†ๅฐ‘ใ—ใง้’ใƒ‘ใƒ•ใ‚ฉใ ใฃใŸใŒใ€ใใฎใŸใ‚ใซใฏC,Eๅ•้กŒใ‚’ใ‚‚ใ†ๅฐ‘ใ—ๆ—ฉใ่งฃใๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใซใ‚ˆใ‚‹ใจ้…ๅปถใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใงใ‚‚ ่งฃใ‘ใ‚‹ ใฎใ ใŒใ€ๅฎŸ่ฃ…ๆ–นๆณ•ใŒใพใ‚‹ใง่ฆ‹ๅฝ“ใŒใคใ‹ใชใ‹ใฃใŸใ€‚

ABC 359-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

่ฒชๆฌฒๆณ•ใจใ„ใ†่จ€่‘‰ใŒ่ฆ‹ใˆใฆใ—ใพใฃใŸใฎใง่‡ชๅŠ›ACใ‹ใจใ„ใ†ใจๅพฎๅฆ™ใ ใŒใ€ใใ‚Œไปฅ้™ใฎ่งฃๆณ•ใ‚’ๆ€ใ„ใคใ„ใŸใ€‚

$d_i$ ใ‹ใ‚‰ๆฌกๆ•ฐใ‚’ไธ€ใคไธŠใ’ใŸๆ™‚ใฎ $f(T)$ ใฎๅข—ๅˆ†ใฏ $(2d_i + 1)A_i$ ใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆๅข—ๅˆ†ใŒๅฐ‘ใชใ„้ †ใซๅข—ใ‚„ใ—ใฆใ„ใ‘ใฐใ‚ˆใ„ใ€‚ๅข—ๅˆ†ใฎๆ˜‡้ †ใ‚’็ฎก็†ใ™ใ‚‹ๅ„ชๅ…ˆๅบฆใ‚ญใƒฅใƒผใซๅˆๆœŸๅ€ค $(3 \times A_{1..N}, 1..N)$ ใ‚’ๅ…ฅใ‚Œใ‚‹ใ€‚ $3$ ใฏๆฌกๆ•ฐ1ใฎใจใใฎๅข—ๅˆ†ใฎไฟ‚ๆ•ฐใงใ€ๅ„ชๅ…ˆๅบฆใ‚ญใƒฅใƒผใซใฏๅข—ๅˆ†ใจ้ ‚็‚น็•ชๅทใ‚’็ต„ใซใ—ใฆๅ…ฅใ‚Œใ‚‹ใ€‚

ใ“ใ“ใ‹ใ‚‰ๆฌกๆ•ฐใ‚’ $N-2$ ๅ›žๅข—ใ‚„ใ›ใฐใ‚ˆใ„ใ€‚ใ‚ญใƒฅใƒผใ‹ใ‚‰ๅ–ใ‚Šๅ‡บใ—ใŸ้ ‚็‚น $i$ ใซใคใ„ใฆๆฌกๆ•ฐใ‚’1ๅข—ใ‚„ใ—ใฆใ‹ใ‚‰ใ€ๅข—ๅˆ†ใจ้ ‚็‚น็•ชๅทใฎ็ต„ $((2d_i + 1)A_i, i)$ ใ‚’ๅ„ชๅ…ˆๅบฆใ‚ญใƒฅใƒผใซๅ…ฅใ‚Œใ‚‹ใ€‚ $N-2$ ๅ›žๅพŒใซใใ‚Œใžใ‚Œใฎ้ ‚็‚นใฎๆฌกๆ•ฐ(ๆœ€ไฝŽ1)ใŒๆฑบใพใ‚‹ใฎใง็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎ้ ‚็‚นใฎๆฌกๆ•ฐใŒใฉใ†ใ‚ใ‚Œใ€ใใ“ใ‹ใ‚‰ๆœจใ‚’ๆง‹ๆˆใ™ใ‚‹ใ“ใจใฏๅฏ่ƒฝใงใ‚ใ‚‹ใ“ใจใ‚’่‡ชๆ˜Žใจใ—ใŸใŒใ€ใƒ—ใƒชใƒฅใƒผใƒ•ใ‚กใƒผใ‚ณใƒผใƒ‰ใจใ„ใ†ใ‚‰ใ—ใ„ใ€‚

ABC 360-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ36ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใ€Eๅ•้กŒใŒๅ…จใ่งฃใ‘ใชใ‹ใฃใŸใ€‚่กŒๅˆ—ใƒ€ใƒ–ใƒชใƒณใ‚ฐใง่งฃใ‘ใ‚‹ใจๆฐ—ใฅใ„ใŸใจใใฏๅ‹ใฆใ‚‹ใจๆ€ใฃใŸใŒใ€ๅฎŸ้š›ใซใฏๅฎŒๆ•—ใ ใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๆ–‡ๅญ—ๅˆ—ใซใŠใ‘ใ‚‹ R ใฎไฝ็ฝฎใŒ M ใ‚ˆใ‚Šๅฐใ•ใ‘ใ‚Œใฐ Yes ใ€ใใ†ใงใชใ‘ใ‚Œใฐ No ใงใ‚ใ‚‹ใ€‚

ABC 360-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

0-based indexing ใง่€ƒใˆใ‚‹ใ€‚

$w = 1..(|S|-1)$ ใจๆฑบใ‚ๆ‰“ใกใ™ใ‚‹ใ€‚ $S$ ใ‚’ๅ…ˆ้ ญใ‹ใ‚‰ $i = 0..(|S|-1)$ ๆ–‡ๅญ—็›ฎใฏใ€ๅŒบๅˆ‡ใฃใŸๆ–‡ๅญ—ใฎ $i MOD w$ ๆ–‡ๅญ—็›ฎใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ $c = i MOD w$ ใชๆ–‡ๅญ—ใ‚’ใคใชใ’ใฆ $T$ ใจๅŒใ˜ใ‹ใฉใ†ใ‹่ชฟในใ‚‹ใ€‚

ABC 360-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

็ฎฑใซ่ท็‰ฉใŒ่ค‡ๆ•ฐใ‚ใ‚‹ใจใใ€ใใฎ็ฎฑใงไธ€็•ช่ท็‰ฉไปฅๅค–ใ‚’็งปๅ‹•ใ™ใ‚‹ใ€‚ใฉใ“ใซ็งปๅ‹•ใ™ใ‚‹ใ‹ใฏๆฐ—ใซใ—ใชใ„ใ€‚

ABC 360-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚„ใ‚„ใ“ใ—ใ„ใŒใ€ใƒ‡ใƒผใ‚ฟใ‚’ไธŠๆ‰‹ใๆ•ด็†ใ™ใ‚‹ใจ่งฃใ‘ใ‚‹ใ€‚

ๆญฃใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใฎๅบงๆจ™ใฎ้›†ๅˆ $P$ , ่ฒ ใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใฎๅบงๆจ™ใฎ้›†ๅˆ $Q$ ใ‚’ๆฑ‚ใ‚ใ€ใใ‚Œใžใ‚Œๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆใŠใใ€‚

ๆญฃใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใฎๅบงๆจ™ใ‚’ $P_i \in P$ ใจใ™ใ‚‹ใ€‚ใ“ใฎ่Ÿปใจใถใคใ‹ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ใฎใฏใ€ $Q \in [P_i,P_i + 2T]$ ใซๅฑ…ใ‚‹ใ€่ฒ ใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใงใ‚ใ‚‹ใ€‚ๅŒๆง˜ใซ่ฒ ใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใฎๅบงๆจ™ใ‚’ $Q_j \in Q$ ใจใ™ใ‚‹ใ€‚ใ“ใฎ่Ÿปใจใถใคใ‹ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ใฎใฏใ€ $P \in [Q_i - 2T,Q_i]$ ใซๅฑ…ใ‚‹ใ€ๆญฃใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใงใ‚ใ‚‹ใ€‚

ใ“ใ‚Œใ‚‰ใฏไบŒๅˆ†ๆŽข็ดขใงๆฑ‚ใพใ‚‹ใ€‚ๅขƒ็•Œๅ€คใซๆณจๆ„ใ—ใฆไธŠๆ‰‹ใใ‚คใƒ†ใƒฌใƒผใ‚ฟๅŒๅฃซใ‚’ๆธ›็ฎ—ใ™ใ‚‹ใ€‚ๆœ€ๅพŒใซ่Ÿปใฎใƒšใ‚ขใ‚’ไบŒ้‡ใซๆ•ฐใˆใŸใฎใงใ€ๅˆ่จˆใ‚’2ใงๅ‰ฒใ‚‹ใ€‚2ใงๅ‰ฒใ‚‰ใชใใฆใ‚‚ใ€ๆญฃใฎๆ–นๅ‘ใ‚’ๅ‘ใ„ใฆใ„ใ‚‹่Ÿปใ‹ใ‚‰ใ ใ‘ๆ•ฐใˆใ‚Œใฐใ‚ˆใ‹ใฃใŸใ€‚

ABC 360-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๆผธๅŒ–ๅผใ‚’่กŒๅˆ—ใƒ€ใƒ–ใƒชใƒณใ‚ฐใ™ใ‚‹ใฎใ ใ‚ใ†ใจๆ€ใฃใŸใ‚‰ใ€็ญ”ใˆใŒๅ…จใๅˆใ‚ใชใ‹ใฃใŸใ€‚ $K \leq 10^{12}$ ใงใฏใชใ $K \leq 10^{5}$ ใŒไฝ•ใ‚’ๆ„ๅ‘ณใ™ใ‚‹ใ‹ๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใŒใ€ๅ˜ใซ่กŒๅˆ—ใƒ€ใƒ–ใƒชใƒณใ‚ฐใ‚’ไฝฟใ‚ใชใใฆใ‚‚่งฃใ‘ใ‚‹ใจใ„ใ†ๆ„ๅ‘ณใ ใฃใŸใ‚‰ใ—ใ„ใ€‚

$N$ ใฏๅคงใใ„ใŒใ€ไฝ็ฝฎใ‚’ๅŒบๅˆฅใ™ใ‚‹ใฎใฏๅทฆ็ซฏใจใใ‚Œไปฅๅค–ใ ใ‘ใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ้ป’ใ„ใƒœใƒผใƒซใŒๅทฆ็ซฏใซๅฑ…ใ‚‹็ขบ็އใ‚’ๆผธๅŒ–ๅผใงๆฑ‚ใ‚ใ‚‹ใ€‚่กŒๅˆ—ใƒ€ใƒ–ใƒชใƒณใ‚ฐใ‚’ไฝฟใฃใฆใ‚‚ใ‚ˆใ„ใ€‚ใฎใ ใŒใ€ใฉใ†ใ—ใฆ่‡ชๅˆ†ใฎๆผธๅŒ–ๅผใŒ้–“้•ใฃใฆใ„ใฆๅ…ฌๅผ่งฃ่ชฌใฎๆผธๅŒ–ๅผใŒๆญฃใ—ใ„ใฎใ‹ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

่กŒๅˆ—ใƒ€ใƒ–ใƒชใƒณใ‚ฐใงใ‚‚ ๆฑ‚ใพใ‚‹ ใ€‚ๆผธๅŒ–ๅผใฎๆญฃใ—ใ„่กŒๅˆ— $A$ ใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ‚ใ‚‹ใ€‚mod 998244353่จˆ็ฎ—ใ™ใ‚‹ใจใใฏๆ•ดๆ•ฐใ‚ชใƒผใƒใƒ•ใƒญใƒผใ—ใชใ„ใ‚ˆใ†ใซใ“ใพใ‚ใซmodใ‚’ๅ–ใ‚‹ใ€‚modintใ‚’ไฝฟใ†ใจ ใ“ใ† ใชใ‚‹ใ€‚

$$ 1/N^2 \begin{pmatrix} 1 + (N-1)^2 & 2 \\ 2(N-1) & N^2 - 2 \\ \end{pmatrix} $$

  • ่กŒๅˆ—ใฎๅทฆไธŠ: ใƒœใƒผใƒซใŒๅทฆ็ซฏใซใ‚ใฃใฆใ€ๅทฆ็ซฏใฎใพใพใจใ„ใ†ใฎใฏใ€ $a=1, b=1$ ใจใ€ $a \ne 1, b \ne 1$ ใจใชใ‚‹ใ™ในใฆ็ต„
  • ่กŒๅˆ—ใฎๅณไธŠ: ใƒœใƒผใƒซใŒๅทฆ็ซฏไปฅๅค– $i$ ใซใ‚ใฃใฆใ€ๅทฆ็ซฏใซๆฅใ‚‹ใฎใฏใ€ $a=1, b=i$ ใจใ€ $a=i, b=1$ ใฎไบŒ้€šใ‚Šใ€‚ใ“ใ‚ŒใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚
  • ่กŒๅˆ—ใฎๅทฆไธ‹: ใƒœใƒผใƒซใŒๅทฆ็ซฏใซใ‚ใฃใฆใ€ๅทฆ็ซฏไปฅๅค–ใซๆฅใ‚‹ใฎใฏใ€ $a=1, b \neq 1$ ใจใ€ $a \neq 1, b=1$ ใจใชใ‚‹ใ™ในใฆ็ต„
  • ่กŒๅˆ—ใฎๅณไธ‹: ใƒœใƒผใƒซใŒๅทฆ็ซฏไปฅๅค–ใซใ‚ใฃใฆใ€ๅทฆ็ซฏไปฅๅค–ใฎใพใพใชใฎใฏใ€ๅทฆ็ซฏใซใใ‚‹2้€šใ‚Šไปฅๅค–

ๆœ€ๅˆใฏใƒœใƒผใƒซใŒๅทฆ็ซฏใซใ‚ใ‚‹ใฎใงๅˆๆœŸใƒ™ใ‚ฏใƒˆใƒซใฏ $v = {(1,0)}^T$ ใงใ‚ใ‚‹ใ€‚ $A^K v$ ใ‚’ใƒ€ใƒ–ใƒชใƒณใ‚ฐใงๆฑ‚ใ‚ใ‚‹ใจใ€่กŒๅˆ—ใฎๅทฆไธŠใŒ $K$ ๆ“ไฝœๅพŒใซใƒœใƒผใƒซใŒๅทฆ็ซฏใซใ‚ใ‚‹็ขบ็އ $p$ ใ€่กŒๅˆ—ใฎๅทฆไธ‹ใŒ $K$ ๆ“ไฝœๅพŒใซใƒœใƒผใƒซใŒๅทฆ็ซฏไปฅๅค–ใซใ‚ใ‚‹็ขบ็އ $q = 1-p$ ใงใ‚ใ‚‹ใ€‚ $1/N^{2K}$ ใ‚’ๆŽ›ใ‘ใ‚‹ใฎใ‚’ๅฟ˜ใ‚Œใชใ„ใ€‚

ๆœŸๅพ…ๅ€คใฎๅฎš็พฉใ‹ใ‚‰ใ€็ญ”ใˆใฏ $p \times 1 + q/(n-1) \times (n+2)(n-1)/2$ ใคใพใ‚Š $p + q(n+2)/2$ ใงใ‚ใ‚‹ใ€‚

ABC 361-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ37ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใ€Eๅ•้กŒใซ104ๅˆ†ๆŽ›ใ‹ใ‚Šใ€34ๅˆ†ใง่งฃใ‘ใŸFๅ•้กŒใ‚’่ฝใจใ—ใŸใ€‚่ฉฆๅˆ้‹ใณใŒไธ‹ๆ‰‹ใ™ใŽใ‚‹ใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚Šใ€ $X$ ใ‚’ๆŒฟๅ…ฅใ—ใŸ้…ๅˆ—ใ‚’ไฝœใ‚‹ใ€‚้…ๅˆ—ใ‚’ๆ˜Žใซไฝœใ‚‰ใšๆจ™ๆบ–ๅ‡บๅŠ›ใซๅ‡บใ—ใฆใ‚‚ใ‚ˆใ„ใŒใ€ๅŒบๅˆ‡ใ‚Šใ‚’็ฉบ็™ฝใซใ™ใ‚‹ใ‹ๆ”น่กŒใซใ™ใ‚‹ใ‹ใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

ABC 361-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

2ๆœฌใฎๆ•ฐ็›ด็ทš $[L_1,R_1] L1 \leq R_1$ , $[L_2,R_2] L2 \leq R_2$ ใฎๅ…ฑ้€šๅŒบ้–“ใฏ $[max(L_1,L_2),min(R_1,R_2)]$ ใงใ‚ใ‚Šใ€ๅ…ฑ้€šๅŒบ้–“ใฎ้•ทใ•ใฏ $max(0, min(R_1,R_2)-max(L_1,L_2)]$ ใงใ‚ใ‚‹ใ€‚็›ดๆ–นไฝ“ใคใ„ใฆใฏใ€ X,Y,Z ่ปธใ™ในใฆใซใคใ„ใฆใ€ๅ…ฑ้€šๅŒบ้–“ใฎ้•ทใ•ใŒๆญฃใงใ‚ใ‚Œใฐใ‚ˆใ„ใ€‚ๅนณ้ขใซใŠใ‘ใ‚‹้•ทๆ–นๅฝขใฎ้‡ใชใ‚Šใ‚’่€ƒใˆใ‚‹ใจๅˆ†ใ‹ใ‚‹ใ€‚

ABC 361-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$K$ ่ฆ็ด ๆถˆใ™ใฎใงใฏใชใใ€ $M=N-K$ ่ฆ็ด ๆฎ‹ใ™ใจ่€ƒใˆใ‚‹ใ€‚้ †ๅบใ‚’ไฟใฃใฆ้€ฃ็ตใฎไปถใฏใ€่ฆ็ด ใฎๆœ€ๅคงๆœ€ๅฐๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใซใ‚ใŸใฃใฆใฏ้–ขไฟ‚ใชใ„ใฎใงใ€ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆๆธˆใจ่€ƒใˆใฆๆง‹ใ‚ใชใ„ใ€‚

$A$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใ€้€ฃ็ถšใ™ใ‚‹ $M$ ่ฆ็ด ใ‚’ๅ–ใ‚‹ใจใ€ $A_{i+M-1} - A_{i} : 1 \leq i \leq N-M+1$ ใฎๆœ€ๅฐๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚้€ฃ็ถšใ™ใ‚‹ $M$ ่ฆ็ด ใ‚’ใจใ‚‰ใชใ„ใจใ€้–“ใซไฝ™่จˆใชใ‚‚ใฎใŒใฏใ•ใพใฃใฆ $A_{i+j+M-1} \geq A_{i+M-1}$ ใ‚ˆใ‚Šๆœ€ๅฐๅ€คใงใชใ„ๅ€คใซใชใฃใฆใ—ใพใ†ใฎใงใ€ใใ†ใ„ใ†้ธใณๆ–นใฏๆ„ๅ‘ณใŒ็„กใ„ใ€‚

ABC 361-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

็Šถๆ…‹้ท็งปใ‚’็„กๅ‘ใ‚ฐใƒฉใƒ•ใซใ—ใฆใ€ $S$ ใ‹ใ‚‰ $T$ ใธใฎๆœ€็Ÿญ่ท้›ขใ‚’ๆฑ‚ใ‚ใ‚Œใฐใ„ใ„ใ€‚ใ“ใฎใ“ใจใฏใ™ใใซๅˆ†ใ‹ใฃใŸใŒใ€ๅฎŸ่ฃ…ใ‚’ใฉใ†ใ™ใ‚‹ใ‹ๆ‚ฉใ‚“ใงๆ™‚้–“ใ‚’ไฝฟใฃใฆใ—ใพใฃใŸใ€‚ๅฎšๆ•ฐๅ€ๆœ€้ฉๅŒ–ใซๆฐ—ใ‚’ไฝฟใ„ใ™ใŽใŸใ€‚

็ตๅฑ€ไปฅไธ‹ใฎ้€šใ‚Šใซใ—ใŸใ€‚

  • W = 0, B = 1, ็ฉบใใƒžใ‚น = 0 ใจใ™ใ‚‹ใƒ“ใƒƒใƒˆๅˆ—ใ‚’ไฝœใ‚‹ใ€‚ๅˆถ็ด„ใ‹ใ‚‰ๆœ€้•ท16ใƒ“ใƒƒใƒˆใงใ‚ใ‚‹ใ€‚็ฉบใใƒžใ‚นใ‚’็Šถๆ…‹ใซๆŒใŸใ›ใ‚‹ใจ $3^{16}$ ็Šถๆ…‹ใซใชใฃใฆๅคงๅค‰ใงใ‚ใ‚‹ใ€‚
  • ็ฉบใใƒžใ‚นใฎๅ…ˆ้ ญไฝ็ฝฎ(ใ‚ซใƒผใ‚ฝใƒซ)ใ‚’ใ€0-based indexingใง็ฎก็†ใ™ใ‚‹ใ€‚ๅˆถ็ด„ใ‹ใ‚‰ $0..14$ ใฎๅ€คใ‚’ๅ–ใ‚‹ใ€‚
  • ไธŠ่จ˜ใ‚ˆใ‚Š็Šถๆ…‹ๆ•ฐใฏใ€้ซ˜ใ€…100ไธ‡็จ‹ๅบฆ( $15 \times 2^{16}$ )ใงใ‚ใ‚‹ใ€‚้ท็งปๅ…ˆใ‚‚้ซ˜ใ€…13ใงใ‚ใ‚‹ใ€‚
  • ใ‚ญใƒฅใƒผใซ่ผ‰ใ›ใ‚‹็Šถๆ…‹ใฏใ€ใƒ“ใƒƒใƒˆๅˆ—ใจใ‚ซใƒผใ‚ฝใƒซใฎ็ต„ใซใ™ใ‚‹ใ€‚ใƒ“ใƒƒใƒˆๅˆ—ใจๆ•ดๆ•ฐใฏ็›ธไบ’ใซๅค‰ๆ›ใ™ใ‚‹ใ€‚

ๅพŒใฏๅˆๆœŸๅ€คใ‚’ $(S,N)$ ใจใ—ใฆBFSใง $(T,N)$ ใพใงใฎๆœ€็Ÿญ่ท้›ขใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

ABC 361-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

DFSใงใ‚ใ‚‹ใ“ใจใฏๅˆ†ใ‹ใ‚‹ใŒใ€ไฝ•ใ‚’่ผ‰ใ›ใ‚‹ใฎใ‹ใ•ใฃใฑใ‚Šใ‚ใ‹ใ‚‰ใชใ„ใ€‚

DFSใ™ใ‚‹ใจใ€ๅคงไฝ“ใฎ่พบใฏไบŒๅบฆใŸใฉใ‚‹ใŒใ€ไธ€้ƒจใฎ่พบใฏไธ€ๅบฆใ—ใ‹ใŸใฉใ‚‰ใชใ„ใ€‚ใ‚ˆใฃใฆไธ€ๅบฆใ—ใ‹ใŸใฉใ‚‰ใชใ„่พบใฎ้‡ใฟใ‚’ๆœ€ๅคงๅŒ–ใ™ใ‚Œใฐใ„ใ„ใจๅˆ†ใ‹ใ‚‹ใ€‚ไบŒใคใฎ่‘‰ใฎ้–“ใฎๆœ€้•ท่ท้›ขใ‚’ๆฑ‚ใ‚ใ‚‹ใ“ใจใซ็ญ‰ใ—ใ„ใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซใ€ๆœจใฎ็›ดๅพ„ใจ่จ€ใ†่จ€่‘‰ใŒ่ฆ‹ใˆใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌใฏๆœจใฎ็›ดๅพ„ใŒๅ‰ๆใซใชใฃใฆใ„ใ‚‹ใ€‚

ๆœจใฎ็›ดๅพ„ใ‚’ๆฑ‚ใ‚ใ‚‹ๆ–นๆณ•ใ‚’็Ÿฅใ‚‰ใชใ„ใ€ใจใ„ใ†ๅ‰ๆใงใ€ไปฅไธ‹ใฎๆ–นๆณ•ใง่งฃใ‘ใ‚‹ใ€‚

  • ๆฌกๆ•ฐใŒ2ไปฅไธŠ(ๅญใƒŽใƒผใƒ‰ใŒ2ๅ€‹ไปฅไธŠใฎ)ใฎไปปๆ„ใฎใƒŽใƒผใƒ‰ใ‚’ๆ นใจใ—ใฆ้ธใถ
  • ๆ นใ‹ใ‚‰DFSใ™ใ‚‹ใ€‚้ƒจๅˆ†ๆœจใซใŠใ„ใฆใ€ไปฅไธ‹ใฎ็ต„ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๆœจๅ…จไฝ“ใฎๆ นใซๅ‘ใ‹ใฃใฆไผๆฌใ™ใ‚‹ใ€‚
    • ้ƒจๅˆ†ๆœจใฎๆ นใ‹ใ‚‰่‘‰ใฎๆœ€้•ท่ท้›ข
    • ้ƒจๅˆ†ๆœจใซใŠใ‘ใ‚‹ใ€่‘‰ๅŒๅฃซใฎๆœ€้•ท่ท้›ข
  • ่‘‰ใซใŠใ„ใฆใฏใ€ใฉใกใ‚‰ใ‚‚0ใงใ‚ใ‚‹ใ€‚
  • ๆฌกๆ•ฐใŒ2(่ฆชใจๅญใŒ1ใƒŽใƒผใƒ‰ใšใค)ใฎใƒŽใƒผใƒ‰ใซใŠใ„ใฆใฏ
    • ้ƒจๅˆ†ๆœจใฎๆ นใ‹ใ‚‰่‘‰ใฎๆœ€้•ท่ท้›ขใฏใ€ๆ นใ‹ใ‚‰ๅญใพใงใฎ่ท้›ขใ‚’ใ€ๅญใŒ่ฟ”ใ—ใŸๆœ€ๅคงๅ€คใซ่ถณใ™
    • ้ƒจๅˆ†ๆœจใซใŠใ‘ใ‚‹่‘‰ๅŒๅฃซใฎๆœ€้•ท่ท้›ขใฏใ€ๅญใฎๅ€คใ‚’ไผๆฌใ™ใ‚‹
  • ๆฌกๆ•ฐใŒ3(ๅญใŒ่ค‡ๆ•ฐ)ใฎใƒŽใƒผใƒ‰ใซใŠใ„ใฆใฏ
    • ้ƒจๅˆ†ๆœจใฎๆ นใ‹ใ‚‰่‘‰ใฎๆœ€้•ท่ท้›ขใฏใ€ๆ นใ‹ใ‚‰ๅญใพใงใฎ่ท้›ขใ‚’ใ€ๅญใŒ่ฟ”ใ—ใŸๆœ€ๅคงๅ€คใซ่ถณใ™
    • ้ƒจๅˆ†ๆœจใซใŠใ‘ใ‚‹่‘‰ๅŒๅฃซใฎๆœ€้•ท่ท้›ขใฏใ€ๅญใŒ่ฟ”ใ—ใŸๆœ€ๅคงๅ€คใจใ€ๆ นใ‹ใ‚‰็•ฐใชใ‚‹ๅญใฎ่‘‰ใพใงๆœ€้•ท่ท้›ขใฎๅ’Œใจใ€ใฉใกใ‚‰ใ‹ๅคงใใ„ๆ–นใซใ™ใ‚‹ใ€‚ๅ‰่€…ใฏใใฎๅญใ‚’ๆ นใจใ™ใ‚‹้ƒจๅˆ†ๆœจใฎๅ€คใ€ๅพŒ่€…ใฏ็•ฐใชใ‚‹ๅญใ‚’ๆ นใจใ™ใ‚‹้ƒจๅˆ†ๆœจใซใ‚ใ‚‹่‘‰ๅŒๅฃซใ‚’็ตใถใจใใฎๅ€คใงใ‚ใ‚‹ใ€‚

ใ™ในใฆใฎ่พบใฎ้‡ใ•ใฎๅ’Œใ‚’ $W$ ใ€่‘‰ๅŒๅฃซใฎๆœ€้•ท่ท้›ขใคใพใ‚Šๆœจใฎ็›ดๅพ„ใ‚’ $D$ ใจใ™ใ‚Œใฐใ€็ญ”ใˆใฏ $2W-D$ ใงใ‚ใ‚‹ใ€‚็ต่ซ–ใฏ่ฆ‹ใˆใฆใ„ใŸใŒใ€ๆœจใฎ็›ดๅพ„ใจใ„ใ†็”จ่ชžใ‚’ๅฟ˜ใ‚Œใฆใ„ใŸใฎใงไธŠๆ‰‹ใๆฆ‚ๅฟตใจใ—ใฆใจใ‚‰ใˆใ‚‰ใ‚Œใชใ‹ใฃใŸใ€‚ๆœจใฎ็›ดๅพ„ใ‚’ๆฑ‚ใ‚ใ‚‹ๆ–นๆณ•ใ‚’ใƒฉใ‚คใƒ–ใƒฉใƒชๅŒ–ใ™ใ‚‹ใจ ใ“ใฎใ‚ˆใ†ใซ ็ฐกๆฝ”ใซๆ›ธใ‘ใ‚‹ใ€‚104ๅˆ†ๆŽ›ใ‹ใฃใฆใ—ใพใฃใŸใฎใ ใŒใ€ๆœจใฎ็›ดๅพ„ใจๆฐ—ใฅใ‘ใฐใ‚‚ใฃใจๆ—ฉใ่งฃใ‘ใŸใ‹ใ€Fๅ•้กŒใ‚’ๅ…ˆใซ่งฃใ„ใŸใ€‚

ABC 361-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซ34ๅˆ†ใง่งฃใ‘ใฆใ—ใพใฃใŸใ€‚Eๅ•้กŒใ‚’่ซฆใ‚ใฆFๅ•้กŒใ‚’่งฃใ‘ใฐ5ๅฎŒใงใใŸใ€‚็ขบใ‹ใซๆญฃ่งฃ่€…ๆ•ฐใฏEๅ•้กŒใ‚ˆใ‚ŠFๅ•้กŒใฎๆ–นใŒๅฐ‘ใชใ‹ใฃใŸใŒ(่‡ชๅˆ†ใฎใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐๅธฏใ ใจ6ๅ‰ฒๅฏพ2ๅ‰ฒ)ใ€็งใซใจใฃใฆใฏFๅ•้กŒใฎๆ–นใŒ่งฃใใ‚„ใ™ใ‹ใฃใŸใฎใ ใ‹ใ‚‰ใ€Fๅ•้กŒใซไน—ใ‚Šๆ›ใˆใ‚‹ในใใ ใฃใŸใ€‚่ฉฆๅˆ้‹ใณใŒไธ‹ๆ‰‹ใ™ใŽใ‚‹ใ€‚

$a^b$ ใฏใใ‚Œใปใฉๅคšใใชใ„( $a=2$ ใงใ‚‚ $b$ ใฏ60็จฎ้กž็จ‹ๅบฆ)ใ€ $N^{1/3} \leq 10^6$ ใจใ„ใ†ๅˆถ็ด„ใ‹ใ‚‰ใ€ $a \leq 10^6$ ใฏๅ…จๆŽข็ดขใ€ $a &gt; 10^6$ ใฏใ„ใ„ๆ„Ÿใ˜ใซ้€Ÿใๆ•ฐใˆใ‚‹ใจใ‚ˆใ•ใใ†ใงใ‚ใ‚‹ใ€‚ $a=1$ ใฏๅฟ…ใš้กŒๆ„ใ‚’ๆบ€ใŸใ™ใ€‚

  • $a=2..10^6$ ใฏ $a^b = m \leq N$ ใซใชใ‚‹ๅ…จๆŽข็ดขใ—ใฆใ€้‡่ค‡ใชใ—้›†ๅˆใซๅ…ฅใ‚Œใ‚‹ใ€‚้‡่ค‡ใชใ—ใซใ—ใชใ„ใจๅพŒใงใŠใ‹ใ—ใใชใ‚‹(ไพ‹ใˆใฐ $2^4 = 4^2$ ใŒ้‡่ค‡ใ™ใ‚‹)
  • $a^b$ ใฎ้‡่ค‡ใชใ—้›†ๅˆใ‚’ๆ˜‡้ †ใฎ้…ๅˆ—ใซๅฑ•้–‹ใ™ใ‚‹
  • $L = 10^6$, $\lfloor \sqrt{N} \rfloor = R$ ใจใ™ใ‚‹ใ€‚ $L \geq R$ ใชใ‚‰ไปฅไธ‹ใฎๅ‡ฆ็†ใฏใ—ใชใ„(ใ“ใฎใจใใฏไพฟๅฎœไธŠ $R=L$ ใจใ™ใ‚‹)ใ€‚
  • $L &lt; a \leq R$ ใซใ‚ใ‚‹ $a^b$ ใฎๅ€‹ๆ•ฐ $C$ ใฏใ€ไธŠ่จ˜ใฎ้…ๅˆ—ใ‹ใ‚‰ๅˆ†ใ‹ใ‚‹ใ€‚std::ranges::upper_bound(vs, R) - std::ranges::upper_bound(vs, L) ใงๆ•ฐใˆใ‚‰ใ‚Œใ‚‹ใ€‚

็ญ”ใˆใฏ $|S| + R - L - C$ ใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใซใ‚ใ‚‹ใ€ๅฐ‘ใ—ๅŠ›ใฅใใช่งฃๆณ•ใ ใŒTLEใ—ใชใ„ใ€‚

ABC 362-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ38ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใ‚’84:31ใƒšใƒŠใƒซใƒ†ใ‚ฃ็„กใ—ใ€Cๅ•้กŒใŒไธ€็•ช้›ฃใ—ใใ€ๆฎ‹ใ‚Š14ๅˆ†ใ‚ใฃใŸใŒGๅ•้กŒใฏTLE่งฃใ—ใ‹ๆ€ใ„ใคใ‹ใชใ‹ใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Red ใชใ‚‰ $min(G,B)$ ใ€ Green ใชใ‚‰ $min(R,B)$ ใ€ Blue ใชใ‚‰ $min(R,G)$ ใงใ‚ใ‚‹ใ€‚

ABC 362-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไบŒ่พบใŒ็›ด่ง’ใฉใ†ใ‹ใฏใ€ๅ†…็ฉใŒ0ใ‹ใฉใ†ใ‹ใงๅˆ†ใ‹ใ‚‹ใ€‚ใ‚ˆใฃใฆ $\vec{BA} \cdot \vec{CA}$ , $\vec{CA} \cdot \vec{BC}$ , $\vec{BC} \cdot \vec{BA}$ ใฎใ„ใšใ‚ŒใŒ0ใชใ‚‰็›ด่ง’ไธ‰่ง’ๅฝขใงใ‚ใ‚‹ใ€‚ใƒ™ใ‚ฏใƒˆใƒซใฎๅ‘ใใฏ้€†ใงใ‚‚ใ‚ˆใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏ ไธ‰ๅนณๆ–นใฎๅฎš็† ใ ใฃใŸใ€‚

ABC 362-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ…จใ่งฃใ‘ใ‚‹่ฆ‹่พผใฟใŒใชใใ€D,Eๅ•้กŒใ‚’่งฃใ„ใŸๅพŒใซ่งฃใ„ใŸใ€‚

ๆœ€ๅฐๅ€คใฎๅ’Œ $\sum L$ ใŒๆญฃใ‹ใ€ๆœ€ๅคงๅ€คใฎๅ’Œ $\sum R$ ใŒ่ฒ ใชใ‚‰่งฃใชใ—ใงใ‚ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐไฝ•็ญ‰ใ‹่งฃใŒใ‚ใ‚‹ใ€‚

็ญ”ใˆ $X_i$ ใ‚’ๅŒบ้–“ใฎๅนณๅ‡ๅ€ค $\lfloor (L_i + R_i) / 2 \rfloor$ ใซไปฎๆฑบใ‚ใ—ใฆใ€ใใ‚Œใ‚‰ใฎๅ’Œ $S$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ $S=0$ ใซใชใ‚‹ใ‚ˆใ†ใซ $X_i$ ใ‚’่ฃœๆญฃใ™ใ‚‹ใ€‚ $i=1..N$ ใซใคใ„ใฆไปฅไธ‹ใฎใ‚ˆใ†ใซๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ $S$ ใ‚’ใงใใ‚‹ใ ใ‘0ใซๅฏ„ใ›ใ‚‹ใ€‚

  • $S = 0$ ใชใ‚‰ไฝ•ใ‚‚ใ—ใชใ„
  • $S &gt; 0$ ใชใ‚‰ $S$ ใ‚’ๆธ›ใ‚‰ใ™ใ€‚ๆœ€ๅคง $X_i - L_i$ ๆธ›ใ‚‰ใ›ใ‚‹ใฎใงใ€ $min(S, X_i - L_i)$ ใ ใ‘ $S$ ใจ $X_i$ ใ‚’ๆธ›ใ‚‰ใ™ใ€‚
  • $S &lt; 0$ ใชใ‚‰ $S$ ใ‚’ๅข—ใ‚„ใ™ใ€‚ๆœ€ๅคง $R_i - X_i$ ๅข—ใ‚„ใ›ใ‚‹ใฎใงใ€ $min(-S, R_i - X_i)$ ใ ใ‘ $S$ ใจ $X_i$ ใ‚’ๅข—ใ‚„ใ™ใ€‚

ใ“ใ†ใ—ใฆ่ฃœๆญฃใ—ใŸ $X_i$ ใŒ็ญ”ใˆใฎไธ€ใคใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚’่ชญใ‚€ใจใ€่ฃœๆญฃๅ…ƒใฏๅนณๅ‡ใงใฏใชใ $L_i$ ใงใ‚ˆใ‹ใฃใŸใ€‚ใใฎๆ–นใŒ ๅฎŸ่ฃ… ใŒ็ฐกๅ˜ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใซๆฐ—ใŒไป˜ใ‹ใชใใฆๆ™‚้–“ใ‚’ๆŽ›ใ‘ใฆใ—ใพใฃใŸใ€‚

ABC 362-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Cๅ•้กŒใ‚’่งฃใ‘ใ‚‹่ฆ‹่พผใฟใŒใชใ„ใพใพDๅ•้กŒใซ่กŒใใ€Dๅ•้กŒใŒใ™ใ่งฃใ‘ใŸใ“ใจใซๆ•‘ใ‚ใ‚ŒใŸใ€‚็ซถๆŠ€ใฏๆฐ—ๅˆ†ใฎๅˆ‡ใ‚Šๆ›ฟใˆใŒ้‡่ฆใงใ‚ใ‚‹ใ€‚

้ ‚็‚นใฎ้‡ใฟใฏ่พบใฎ้‡ใฟใซ่ถณใ—ใฆใ—ใพใฃใฆๆง‹ใ‚ใชใ„ใ€‚ใคใพใ‚Š้ ‚็‚น $U$ ใ‹ใ‚‰้ ‚็‚น $V$ ใธใฎๆœ‰ๅ‘่พบ $\vec{UV}$ ใฎ้‡ใฟใซ $A_{v}$ ใ‚’่ถณใ™ใ€‚ $\vec{VU}$ ใฎ้‡ใฟใซ $A_{u}$ ใ‚’่ถณใ—ใฆใ€ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใ€‚

ใ“ใฎๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใซใ€ๅง‹็‚นใ‚’้ ‚็‚น1ใ€้‡ใฟใฎๅˆๆœŸๅ€คใ‚’ $A_1$ ใจใ—ใฆใƒ€ใ‚คใ‚ฏใ‚นใƒˆใƒฉๆณ•ใงไป–ใฎ้ ‚็‚นใพใงใฎๆœ€ๅฐ้‡ใฟใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

ใ“ใฎๆ–นๆณ•ใฏๅ…ฌๅผ่งฃ่ชฌ1ใจๅŒใ˜ใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃๆณ•2ใฎๆ–นๆณ•ใฏ ใ“ใกใ‚‰ ใ€‚

ABC 362-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$N$ ใŒๅฐใ•ใ„ใ€‚

$A$ ใฎไปปๆ„ใฎ2่ฆ็ด ใ‚’ๆทปใˆๅญ—้ †ใซ้ธใถๆ–นๆณ•ใฏใ€ $N(N-1)/2 \leq 3160$ ้€šใ‚Šใ—ใ‹ใชใ„ใ€‚ใ‚ˆใฃใฆ็ญ‰ๅทฎๆ•ฐๅˆ—ใฎๅทฎ(ๆญฃ่ฒ ใ‚ผใƒญ)ใ‚‚้ซ˜ใ€…3160้€šใ‚Šใ—ใ‹ใชใ„ใ€‚ใ‚ˆใฃใฆ่ฆ็ด ใฎๅทฎ $D$ ใซใคใ„ใฆใ€ใใ‚Œใซๅฑžใ™ใ‚‹้ ‚็‚นใฎ็ต„ $D = A_j - A_i : i &lt; j$ ใ‚’ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ• $\vec{ij}$ ใจใ—ใฆใ™ในใฆ็™ป้Œฒใ™ใ‚‹ใ€‚

ไปฅไธ‹ใใ‚Œใžใ‚Œใฎ่ฆ็ด ใฎๅทฎ $D$ ใซใคใ„ใฆใ€็‹ฌ็ซ‹ใชๅ•้กŒใ‚’่€ƒใˆใ‚‹ใ€‚

$D$ ใซๅฑžใ™ใ‚‹ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ• $G$ ใซใคใ„ใฆใ€ใใ‚Œใžใ‚Œใฎๅง‹็‚นใ‹ใ‚‰DPใ™ใ‚‹ใ“ใจใ‚’่€ƒใˆใ‚‹ใ€‚ๅ…ทไฝ“็š„ใซใฏใ€ $DP[i][k]$ ใฏใ€ๅทฎใŒ $D$ ใงใ€้ ‚็‚น $i$ ใŒ็ญ‰ๅทฎๆ•ฐๅˆ—ใฎ $k$ ็•ช็›ฎใฎ่ฆ็ด ใงใ‚ใ‚‹ๆ–นๆณ•ใŒไฝ•้€šใ‚Šใ‹ใ‚’็คบใ™ใ€‚ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใฏ $i$ ใŒๅฐใ•ใ„ๆ–นใ‹ใ‚‰ๅคงใใ„ๆ–นใซๅ‘ใ„ใใฎ้€†ใฏใชใ„ใฎใงใ€ $i=1..N$ ใซใคใ„ใฆๅๅพฉใ™ใ‚‹ใ€‚

  • $DP[][] = 0$ ใงๅˆๆœŸๅŒ–ใ—ใ€ใ•ใ‚‰ใซ $DP[][1] = 1$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚ใคใพใ‚Šๅ˜ไธ€ใฎ่ฆ็ด ใฏใใ‚Œ่‡ช่บซ็ญ‰ๅทฎๆ•ฐๅˆ—ใงใ‚ใ‚Šใ€ใใฎ็ต„ใฟๅˆใ‚ใ›ใฏ1้€šใ‚Šใงใ‚ใ‚‹ใ€‚
  • ๆœ‰ๅ‘ใ‚ฐใƒฉใƒ• $G$ ใฎ้ ‚็‚น $i$ ใ‹ใ‚‰็›ดๆŽฅใŸใฉใ‚Œใ‚‹้ ‚็‚นใฎ้›†ๅˆใ‚’ $V_i$ ใจใ™ใ‚‹ใ€‚ $j \in V_i$ ใจใ—ใฆใ€ $k=1..(N-1)$ ใซใคใ„ใฆ $DP[j][k+1]$ ใซ $DP[i][k]$ ใ‚’่ถณใ™ใ€‚ใคใพใ‚Š้ ‚็‚น $i$ ใพใงใฎใƒ‘ใ‚นใŒๅ–ใ‚Šใ†ใ‚‹็ต„ใฟๅˆใ‚ใ›ใซ้ ‚็‚น $j$ ใ‚’่ฟฝๅŠ ใ™ใ‚‹ใ€‚ $G$ ใฏๅˆ†ๅฒใ‚‚ๅˆๆตใ‚‚ใ‚ใ‚‹ใฎใงๆœจใงใฏใชใ„ใ€‚

ใ“ใ†ใ™ใ‚‹ใจๅ„้ ‚็‚นใซใคใ„ใฆ $DP[i][k=1..N]$ ใŒๆฑ‚ใพใ‚‹ใฎใงใ€ใใ‚Œใ‚‰ใ‚’ $k$ ใซใคใ„ใฆ่ถณใ—ใŸใ‚‚ใฎใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ใชใŠๅ˜ไธ€ใฎ่ฆ็ด ใฏใใ‚Œ่‡ช่บซ็ญ‰ๅทฎๆ•ฐๅˆ—ใชใฎใง $N$ ้€šใ‚Šใ€ไปปๆ„ใฎ2่ฆ็ด ใฏๅฟ…ใš็ญ‰ๅทฎๆ•ฐๅˆ—ใงใ‚ใ‚Š $N(N-1)/2$ ้€šใ‚Šใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚‰ใฏๆฑบใ‚ๆ‰“ใกใ—ใฆใ‚ˆใ„ใ€‚ใ‚ใ‚‹ใ„ใฏ $N=1,2$ ใ‚‚ๆ‰‹่จˆ็ฎ—ใงๆฑ‚ใพใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚‚DPใ ใŒใ€ใฉใฎ่ชฌๆ˜Žใจไธ€่‡ดใ™ใ‚‹ใ‹ๅฎŸใฏใ‚ใ‹ใฃใฆใ„ใชใ„ใ€‚

ABC 362-G

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Suffix Arrayใ‚’็Ÿฅใ‚‰ใชใ‹ใฃใŸใฎใงใ€ๅ…จใ่งฃใ‘ใ‚‹่ฆ‹่พผใฟใŒ็„กใ‹ใฃใŸใ€‚ atcoder::suffix_array ใจ std::string_view ใง้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ—ใ‚’ๅˆ‡ใ‚Šๅ‡บใ—ใ€ std::ranges::partition_point ใงไบŒๅˆ†ๆŽข็ดขใ™ใ‚‹ใจ่งฃใ‘ใ‚‹ใ€‚ๅฎŸ่ฃ…ใใฎใ‚‚ใฎใฏ็ฐกๆฝ”ใชใฎใงใ€ๆฎ‹ใ‚Š14ๅˆ†ใ‚ใฃใŸใ‚‰่งฃใ‘ใ‚‹ใ‚ˆใ†ใซใชใ‚ŠใŸใ„ใ€‚

ABC 363-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ39ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใ€350็‚นๅ•้กŒใฏไปŠๆ—ฅใ‚‚ๅŽณใ—ใใ€6ๅฎŒใฏ้ ใ‹ใฃใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$100 - Rmod100$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ใƒฌใƒผใƒˆใŒ100ใฎๅ€ๆ•ฐใชใ‚‰ใ€็ญ”ใˆใฏ0ใงใฏใชใ100ใงใ‚ใ‚‹ใ€‚

ABC 363-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

$N$ ไบบใฎ้ซชใฎ้•ทใ•ใซใคใ„ใฆ้ †ไฝใฏๅ…ฅใ‚Œๆ›ฟใ‚ใ‚‰ใชใ„ใฎใงใ€ๆœ€ๅˆใฎๆ™‚็‚นใฎ้•ทใ„ๆ–นใ‹ใ‚‰ $P$ ไบบ็›ฎใ ใ‘ๆณจ็›ฎใ™ใ‚Œใฐใ‚ˆใ„ใ€‚็พๅœจใฎ้ซชใฎ้•ทใ•ใซใคใ„ใฆไธŠใ‹ใ‚‰ $P$ ไบบ็›ฎ(ๅŒ้ †ไฝใซ่ค‡ๆ•ฐไบบไธฆใถใ“ใจใฏ็‰นใซ้…ๆ…ฎใ—ใชใใฆใ„ใ„)ใฎ้ซชใฎ้•ทใ•ใ‚’ $L$ ใจใ™ใ‚‹ใจใ€็ญ”ใˆใฏ $max(0,T-L)$ ใงใ‚ใ‚‹ใ€‚

ABC 363-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅŠ›ๆŠ€ใง้€šใ—ใŸใ€‚ $S$ ใฎ้ †ๅˆ—็ต„ใฟๅˆใ‚ใ›ใซใคใ„ใฆใ€้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ— $[1,K]..[N-K+1,N-K]$ ใฎๆญฃ้ †ใจ้€†้ †ใŒไธ€่‡ดใ—ใชใ‘ใ‚Œใฐ็ญ”ใˆใงใ‚ใ‚‹ใ€‚้€ฃ็ถšใ™ใ‚‹้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ—ใจใ„ใ†ใ“ใจใŒ่ชญใฟๅ–ใ‚Œใšใซๆ™‚้–“ใ‚’ๆŽ›ใ‘ใฆใ—ใพใฃใŸใ€‚ $T_{i+j} = T_{i+K+1-j}$ ใจใ‚ใ‚‹ใฎใ ใ‹ใ‚‰้€ฃ็ถšๆ–‡ๅญ—ๅˆ—ใงใ‚ใ‚‹ใ€‚ใใ‚Œใจๅ›žๆ–‡ใงใ‚ใ‚‹ใ“ใจใซๆฏ”ในใฆใ€ๅ›žๆ–‡ใŒ็„กใ„ใ“ใจใ‚’ๅˆคๅฎšใ™ใ‚‹ๆกไปถใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

std::string_view::substr ใ‚’ไฝฟใ„ใ€้ƒจๅˆ†ๆ–‡ๅญ—ๅˆ— $[1,K]..[N-K+1,N-K]$ ใซๅ›žๆ–‡ใŒ่ฆ‹ใคใ‹ใฃใŸใ‚‰ๅˆคๅฎšใ‚’้€”ไธญใงๆ‰“ใกๅˆ‡ใ‚‹ใจ 50 msec ใง็ต‚ใ‚ใ‚‹ใ€‚std::string::substr ใ ใจ 143 msec ๆŽ›ใ‹ใ‚‹ใ€‚

ABC 363-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ไปŠๆ—ฅใ‚‚350็‚นๅ•้กŒใฏ่‹ฆๅŠดใ—ใŸใ€‚ใฑใฃใจ่ฆ‹ใงๅ…จใ่งฃๆณ•ใŒๅˆ†ใ‹ใ‚‰ใชใ„ใฎใงใ€่ฟทใ‚ใšEๅ•้กŒใซ็งปใฃใฆใ€Eๅ•้กŒใ‚’ACใ—ใŸๅพŒใซ่งฃใ„ใŸใ€‚

ใ‚ใ‚‹ๆกๆ•ฐ $w$ ใฎๅ›žๆ–‡ๆ•ฐ $C(w)$ ใฏไปฅไธ‹ใฎ้€šใ‚Šๆฑ‚ใพใ‚‹ใ€‚

  • $w=1$ ใชใ‚‰ $i=1..9$ ใฎ9็จฎ้กž
  • $w=2$ ใชใ‚‰ $i=11 \times 1..9$ ใฎ9็จฎ้กž
  • $w=3$ ใชใ‚‰ๅ…ˆ้ ญใŒ $i=1..9$ ใ€ใใฎๆฌกใŒ $0..9$ ใฎ10้€šใ‚Šใ€ใใฎๅพŒใฏๆŠ˜ใ‚Š่ฟ”ใ—ใชใฎใง่จˆ90็จฎ้กž
  • $w=4$ ใชใ‚‰ๅ…ˆ้ ญใŒ $i=1..9$ ใ€ใใฎๆฌกใŒ $0..9$ ใฎ10้€šใ‚Šใ€ใใฎๅพŒใฏๆŠ˜ใ‚Š่ฟ”ใ—ใชใฎใง่จˆ90็จฎ้กž
  • ไปฅไธ‹ๅŒๆง˜ใซ $C(w) = 10 \times C(w-2)$ ใงใ‚ใ‚‹ใ€‚

$N=1$ ใชใ‚‰็ญ”ใˆใฏ0ใงใ‚ใ‚‹ใ€‚ $N &gt; 1$ ใชใ‚‰ $C(w)$ ใฎ็ดฏ็ฉๅ’Œ $D(w)$ ใ‚’ๆฑ‚ใ‚ใ‚Œใฐใ€ $D(w) \leq (N-1)$ ใจใชใ‚‹ๆœ€ๅคงใฎ $w$ ใŒๆฑ‚ใ‚ใ‚‹ๆกๆ•ฐใงใ‚ใ‚‹ใ€‚ๅขƒ็•Œๅ€คใŒใ‚„ใ‚„ใ“ใ—ใ„( $N=10$ ใฎ็ญ”ใˆใฏ9, $N=11$ ใฎ็ญ”ใˆใฏ11ใงใ‚ใ‚‹)ใ€‚

$R = D(w) - (N-1) \geq 0$ ใซใคใ„ใฆใ€leading zerosใŒ็„กใ„ๆ•ฐ $S = 10... + R - 1$ ใ‚’ๆฑ‚ใ‚ใ‚Œใฐใ‚ˆใ„ใจๅˆ†ใ‹ใ‚‹ใ€‚ใ“ใ‚Œใ‚‚ๅขƒ็•Œๅ€คใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚ $S$ ใฎๆกๆ•ฐใฏใ€ $\lceil W / 2 \rceil$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’้–“้•ใˆใฆWAใฎๅฑฑใ‚’็ฏ‰ใ„ใŸใ€‚ $S$ ใ‚’ๆ–‡ๅญ—ๅˆ—่กจ่จ˜ใ—ใŸใ‚‚ใฎใ‚’ใ‚’ๅ่ปขใ•ใ›ใฆ $T$ ใจใ—ใ€ $W$ ใŒๅฅ‡ๆ•ฐใชใ‚‰ $T$ ใฎๅ…ˆ้ ญใฎๆ–‡ๅญ—ใ‚’ๅ‰ŠใฃใŸใ‚‚ใฎใ‚’ $S$ ใจใคใชใ’ใŸๆ–‡ๅญ—ๅˆ— $ST$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ๆ•ดๆ•ฐใ ใจใ‚ชใƒผใƒใƒผใƒ•ใƒญใƒผใ™ใ‚‹ใฎใง $S,T$ ใฏๆ–‡ๅญ—ๅˆ—ใจใ—ใฆ้€ฃ็ตใ™ใ‚‹ใ€‚

ABC 363-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

Dๅ•้กŒใจ้•ใฃใฆๆ–น้‡ใŒใ™ใ็ซ‹ใฃใŸใ€‚Union-findๆœจใงๆตทใ‚’ๅบƒใ’ใ‚Œใฐใ„ใ„ใ€‚ไปฅไธ‹0-based indexingใง่€ƒใˆใ‚‹ใ€‚

ใ‚ฐใƒชใƒƒใƒ‰ใซใ‚ปใƒณใƒใƒใƒซใ‚’ๅซใ‚ใฆ $(H+2) \times (W+2)$ ใซใ—ใฆใ€ๆœ€ๅค–ๅ‘จ( $0$ ่กŒ็›ฎใ€ $H+1$ ่กŒ็›ฎใ€ $0$ ๅˆ—็›ฎใ€ $W+1$ ๅˆ—็›ฎใซๅฑžใ™ใ‚‹ใ™ในใฆใฎๅŒบ็”ป)ใ‚’ๆตทใซใ™ใ‚‹ใ€‚ๆตทใ‚’union-findๆœจใง้€ฃ็ตใ™ใ‚‹ใ€‚ $r$ ่กŒ $c$ ๅˆ—ใ‚’ๅซใ‚€union-findๆœจใฎ้€ฃ็ตๆˆๅˆ†ๆ•ฐใ‚’ $size(r,c)$ ใจใ™ใ‚‹ใจใ€ๆตทใงใชใ„ๅŒบ็”ปๆ•ฐใฏ $(H+2) \times (W+2) - size(0,0)$ ใงใ‚ใ‚‹ใ€‚

ๆตทใซๆŽฅใ™ใ‚‹ๅณถใฎๅŒบ็”ปใคใพใ‚Šๅขƒ็•Œ $B$ ใ‚’ $1$ ่กŒ็›ฎใ€ $H$ ่กŒ็›ฎใ€ $1$ ๅˆ—็›ฎใ€ $W$ ๅˆ—็›ฎใซๅฑžใ™ใ‚‹ใ™ในใฆใฎๅŒบ็”ปใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚

$i=1..Y$ ใซใคใ„ใฆใ€ๆตทใ‚’ๅบƒใ’ใฆใ„ใใ€‚ๅŒบ็”ป $(r,c) \in B \land A_{r,c} = i$ ใฎๅŒบ็”ปใŒไปŠๅ›žๆฒˆใ‚€ใฎใงใ€ๆตทใจunion-findๆœจใง้€ฃ็ตใ™ใ‚‹ใ€‚ $(r,c)$ ใจ $(0, 0)$ ใ‚’ใคใชใ’ใ‚Œใฐใ‚ˆใใ€ใฉใฎๆตทใฎๅŒบ็”ปใ‹ใฏๆฐ—ใซใ—ใชใใฆใ„ใ„ใ€‚ไปŠๅ›žๆฒˆใ‚“ใ ๅŒบ็”ปใซไธŠไธ‹ๅทฆๅณใซ้€ฃ็ตใ™ใ‚‹ๅŒบ็”ปใงใ€ๆตทใงใฏใชใๆจ™้ซ˜ใŒ $i$ ไปฅไธ‹ใฎๅŒบ็”ปใ‚‚ใ‚„ใฏใ‚ŠไปŠๅ›žๆฒˆใ‚€ใฎใงๆตทใจ้€ฃ็ตใ™ใ‚‹ใ€‚ใ“ใฎๅ†ๅธฐๅ‡ฆ็†ใฏBFSใงๆฑ‚ใพใ‚‹ใ€‚BFSใŒ็ต‚ไบ†ใ—ใŸใจใใซใ€ใ‚ใ‚‹ $i$ ใซใคใ„ใฆ็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚

ๅ„ๅŒบ็”ปใ‚’ $A_{r,c}$ ใฎๅ€คใงๅˆ†้กžใ—ใฆใŠใใจใ€ $(r,c) \in B \land A_{r,c} = i$ ใŒๆ—ฉใๆฑ‚ใพใ‚‹( $B$ ใฎใ‚ตใ‚คใ‚บใซไพใ‚‰ใชใ„)ใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใฏ่ถ…้ ‚็‚นใ‚’ใคใ‹ใฃใฆ็ฐกๆฝ”ใซๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใ€‚

ABC 363-F

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใฎๆฎ‹ใ‚Š9ๅˆ†ใงใฏใชใ™ใ™ในใŒใชใ‹ใฃใŸใ€‚ๅ†ๅธฐใง่งฃใ‘ใ‚‹ใจ็ŸฅใฃใŸใฎใง่‡ชๅŠ›ACใจใฏ่จ€ใ„้›ฃใ„ใŒใ€่งฃ่ชฌใ‚’่ชญใ‚€ๅ‰ใซ่งฃใ‘ใŸใ€‚

$N = \prod A = A_{1,1} \times A_{1,2} \times A_{2,1} \times A_{2,2} \times ...$ ใจใ™ใ‚‹ใ€‚ $A_{i,1}$ ใจ $A_{i,2}$ ใ‚’ๅ›žๆ–‡ใซใ™ใ‚‹(10้€ฒๆ•ฐ่กจ่จ˜ใ—ใŸใจใใฎๆกๆ•ฐใŒๅŒใ˜ใงใ€ $A_{i,1}$ ใ‚’ๅ่ปขใ—ใŸๆ–‡ๅญ—ๅˆ—ใŒ $A_{i,2}$ ใจ็ญ‰ใ—ใ„) ใ€‚ใŸใ ใ— $|A|$ ใŒๅฅ‡ๆ•ฐใฎใจใใซใ€ๆœ€ๅพŒใฎ่ฆ็ด  $A_{(|A|+1)/2,1}$ ใฏใใ‚Œ่‡ช่บซใŒๅ›žๆ–‡ใงใ‚ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚

ไธŠ่จ˜ใ‚’ๆบ€ใŸใ™ใ‚ˆใ†ใชๆ•ฐๅˆ— $A$ ใ‚’ๅฎš็พฉใงใใ‚Œใฐใใ‚ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚่งฃ็ญ”ใฎๅฝขๅผใซ่กจ่จ˜ใ‚’็›ดใ™ใ€‚ $A_{1..,1}$ ใ‚’ๅ…ˆ้ ญใ‹ใ‚‰ใ€ $A_{1..,2}$ ใ‚’ๆœซๅฐพใ‹ใ‚‰ไธฆในใŸๆ•ฐๅ€คใ‚’ไฝœใ‚Šใ€ใใ‚Œใ‚‰ใฎๆ–‡ๅญ—ๅˆ—่กจ่จ˜ใ‚’ * ใง็ตๅˆใ—ใŸใ‚‚ใฎใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

$A$ ใฏ $N$ ใฎ็ด„ๆ•ฐใง้ †็•ชใซๅ‰ฒใ‚ŒใฐDFSใงๆฑ‚ใพใ‚‹ใ€‚ใฎใ ใŒ้ซ˜้€ŸๅŒ–ใ‚’ๅคšใ€…่กŒใ‚ใชใ„ใจTLEใ™ใ‚‹ใ€‚

  • $N$ ใŒ็ด ๆ•ฐใฎใจใใ€ $N$ ใŒๅ›žๆ–‡ๆ•ฐใชใ‚‰ใใ‚ŒใŒ็ญ”ใˆใ€ใใ†ใงใชใ‘ใ‚Œใฐ่งฃใชใ— -1 ใงใ‚ใ‚‹ใ€‚ๅˆถ็ด„ใ‚ˆใ‚Šใ€ $N$ ใ‚’ $10^6$ ไปฅไธ‹ใฎ็ด ๆ•ฐใงๅ‰ฒใฃใฆใ€ๅ‰ฒใ‚Šๅˆ‡ใ‚Œใชใ‘ใ‚Œใฐ $N$ ใฏ็ด ๆ•ฐใงใ‚ใ‚‹ใ€‚
  • $N$ ใฎ็ด„ๆ•ฐใ‚’ๆฑ‚ใ‚ใ€ std::to_string() ใงๆ–‡ๅญ—ๅˆ—่กจ่จ˜ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚็ด„ๆ•ฐใฏไธ€ๆ„ใจใ—ใ€ไฝ•ๅ›ž $N$ ใ‚’ๅ‰ฒใฃใฆใ‚‚ใ‚ˆใ„ใ“ใจใซใ™ใ‚‹ใ€‚
  • ๅ‰ฒใ‚‰ใ‚Œใ‚‹ๆ•ฐ $R=N$ ใ€ $A$ ใ‚’็ฉบใซๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚
  • DFSใซใŠใ„ใฆใ€ $R$ ใ‚’็ด„ๆ•ฐ $f$ ใงๅ‰ฒใ‚Šๅˆ‡ใ‚Œใชใ‘ใ‚Œใฐ็„ก่ฆ–ใ™ใ‚‹ใ€‚ $R$ ใงๅ‰ฒใ‚Šๅˆ‡ใ‚Œใ‚‹ใชใ‚‰ $A$ ใซ $f$ ใ‚’ๅŠ ใˆใ€ $R$ ใ‚’ $R/f$ ใง็ฝฎใๆ›ใˆใฆๅ†ๅธฐใ™ใ‚‹ใ€‚
  • $R=1$ ใชใ‚‰ $A$ ใŒ่งฃใฎๆกไปถใ‚’ๆบ€ใŸใ™ใ‹ใฉใ†ใ‹่ชฟในใฆใ€ๆบ€ใŸใ™ใชใ‚‰็ญ”ใˆใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚่งฃใฎๆกไปถใ‚’ๆบ€ใŸใ•ใชใ‘ใ‚ŒใฐDFSใ‚’็ถ™็ถšใ™ใ‚‹ใ€‚

ใ“ใ‚Œใ‚’็ด ็›ดใซๅฎŸ่ฃ…ใ™ใ‚‹ใจTLEใ™ใ‚‹ใฎใงใ€ๆœ€ๅˆใซ่ฟฐในใŸ $A$ ใฎๆ€ง่ณชใ‚’ๅˆฉ็”จใ—ใฆ้ซ˜้€ŸๅŒ–ใ™ใ‚‹ใ€‚

  • $A$ ใซ $f$ ใ‚’ๅŠ ใˆใŸใ‚‰ $A$ ใŒๅถๆ•ฐ้•ทใซใชใ‚‹ใจใใ€ $f$ ใฏ $A$ ใฎๆœ€ๅพŒใฎ่ฆ็ด ใฎๅ่ปขใซ้™ใ‚‹
  • DFSใฎๆœซ็ซฏใง $|A|$ ใŒๅฅ‡ๆ•ฐ้•ทใชใ‚‰ $A$ ใฎๆœ€ๅพŒใฎ่ฆ็ด ใฏๅ›žๆ–‡ใซ้™ใ‚‹
  • ไบŒใคใฎๆ–‡ๅญ—ๅˆ—ใŒไบ’ใ„ใซๅ่ปขใ‹ใฉใ†ใ‹ใฏใ€ std::equal(sl.begin(), sl.end(), s.rbegin(), s.rend()) ใ‚’ไฝฟใ†ใจๆ–‡ๅญ—ๅˆ—ใ‚’ใ‚ณใƒ”ใƒผใ›ใšใซๅˆคๅฎšใงใใ‚‹ใ€‚4ๅผ•ๆ•ฐใฎ std::equal ใฏใ€ใƒฉใƒณใƒ€ใƒ ใ‚ขใ‚ฏใ‚ปใ‚นใ‚คใƒ†ใƒฌใƒผใ‚ฟใซใคใ„ใฆใฏ้•ทใ•ใŒ็•ฐใชใ‚‹ใจใใซ $O(1)$ ใง false ใ‚’่ฟ”ใ™ใฎใง้€Ÿใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏใƒกใƒขๅŒ–ใ‚’ไฝฟใฃใฆ่จˆ็ฎ—้‡ใ‚’ๅ‰Šๆธ›ใ—ใฆใ„ใ‚‹ใ€‚

ABC 364-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ40ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใ€Eๅ•้กŒใฏ1 WAใซ้˜ปใพใ‚ŒใŸใ€‚

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใพใ•ใ‹ใฎWAใงใ‚ใ‚‹ใ€‚ๅ…ฅๅŠ›ไพ‹2ใŒ้–“้•ใฃใฆใ„ใ‚‹ใ“ใจใซๆฐ—ใŒไป˜ใ‹ใชใ„ใพใพๆๅ‡บใ—ใฆใ—ใพใฃใŸใ€‚

ๅ…ฅๅŠ›ไพ‹2ใซใ‚ใ‚‹้€šใ‚Šใ€ๆœ€ๅพŒใฎๆ–™็†ใ‚’้ฃŸในใŸ็ตๆžœใฏไปฅๅพŒใซๅฝฑ้Ÿฟใ—ใชใ„ใฎใงใ€ $(S_{i-1}, S_{i}) : i &lt; N - 1$ ใ‚’ๆฏ”่ผƒใ™ใ‚‹ใ€‚ $i &lt; N$ ใงใฏใชใ„ใ€‚

ABC 364-B

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๅ•้กŒๆ–‡้€šใ‚ŠๅฎŸ่ฃ…ใ™ใ‚‹ใฎใ ใŒใ€ไปฅไธ‹ใ‚’ๆ›ธใใฎใซใฆๆ‰‹ใ“ใšใฃใฆใ—ใพใฃใŸใ€‚ไธŠไธ‹ใจๅทฆๅณใฎๅŒบๅˆฅใŒๅˆ†ใ‹ใ‚‰ใชใใชใ‚‹ใฎใงใ€ใ‚นใƒ‹ใƒšใƒƒใƒˆใซใ™ใ‚‹ๆ–นใŒใ„ใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

std::map<char, std::pair<Num, Num>> dyxs {{'D', {1, 0}}, {'U', {-1, 0}}, {'R', {0, 1}}, {'L', {0, -1}}};

ABC 364-C

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

DPใ‹ใจๆ€ใฃใŸใ‚‰ใใ†ใงใฏใชใ‹ใฃใŸใ€ใจใ„ใ†ใ‹DPใฏEๅ•้กŒใ ใจๅพŒใงๅˆ†ใ‹ใ‚‹ใ€‚

$A$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆ็”˜ใ„็‰ฉใ‚’้™็•Œใพใง้ฃŸในใ‚‹ใ€ $B$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆใ—ใ‚‡ใฃใฑใ„็‰ฉใ‚’้™็•Œใพใง้ฃŸในใ‚‹ใ€ใฎใ†ใกใŸใใ•ใ‚“้ฃŸในใ‚‰ใ‚Œใ‚‹ๆ–นใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 364-D

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ใฑใฃใจ่ฆ‹ใฆ่งฃๆณ•ใŒๅˆ†ใ‹ใ‚‰ใšใ€Eๅ•้กŒใŒDPใจๅˆ†ใ‹ใฃใŸใฎใงEๅ•้กŒใซๅ…ˆใซ็€ๆ‰‹ใ—ใฆใ—ใพใฃใŸใ€‚ๅ…ˆใซDๅ•้กŒใ‚’่งฃใ„ใฆใ„ใŸใ‚‰ใ‚‚ใฃใจใƒ‘ใƒ•ใ‚ฉใŒใ‚ˆใ‹ใฃใŸใ€‚ใ“ใฎ็จฎใฎๆ•ฐๅญฆๅ•้กŒใฎ่€ƒๅฏŸใซๆ™‚้–“ใŒๆŽ›ใ‹ใ‚‹ใ“ใจใŒใ€ๅ•้กŒ้ธใณใฎๅทงๆ‹™ใซๅฝฑ้Ÿฟใ—ใฆใ„ใ‚‹ใ€‚

$B_j$ ใ‹ใ‚‰ใฎ่ท้›ข $D \geq 0$ ใฏๆญฃใ‚‚่ฒ ใ‚‚ใ‚ใ‚‹ใฎใงๅคงๅค‰ใ€ๅŒใ˜ๅบงๆจ™ใซ่ค‡ๆ•ฐใฎ็‚นใŒใ‚ใ‚‹ใ€ใจใ„ใ†ใฎใŒๆœ€ๅˆใซDๅ•้กŒใ‚’ๅ›ž้ฟใ—ใŸ็†็”ฑใงใ‚ใ‚‹ใ€‚ใ‚ˆใ่€ƒใˆใŸใ‚‰ใ€ $D$ ใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใŸใจใใซใ€ $B_j$ ใ‹ใ‚‰ใฎ่ท้›ขใŒ $D$ ไปฅๅ†… ($D$ ใกใ‚‡ใ†ใฉใ‚’ๅซใ‚€)ใฎ็‚นใฎๆ•ฐใฏใ€ $D$ ใซๅฏพใ—ใฆๅบƒ็พฉๅ˜่ชฟๅข—ๅŠ ใงใ‚ใ‚‹ใ€‚ใจใ„ใ†ใ“ใจใฏ $D$ ใ‚’ไบŒๅˆ†ๆŽข็ดขใ™ใ‚Œใฐใ‚ˆใ„ใ€‚

้–‰ๅŒบ้–“ $[B_{j-D}, B_{j+D}]$ ใซๅซใพใ‚Œใ‚‹ $A$ ใฎๆ•ฐใฏใ€ ไปฅไธ‹ใงๆฑ‚ใพใ‚‹ใ€‚ upper_bound ใจ lower_bound ใฎไฝฟใ„ๅˆ†ใ‘ใŒ็ตถๅฆ™ใงใ‚ใ‚‹ใ€‚

std::ranges::upper_bound(a, b + d) - std::ranges::lower_bound(a, b - d);
  • $B_{j+D}$ ใกใ‚‡ใ†ใฉใ‚’ใ‚คใƒ†ใƒฌใƒผใ‚ฟใฏๆŒ‡ใ•ใชใ„ใ€‚$B_{j+D}$ ใ‚’่ถ…ใˆใ‚‹ๆœ€ๅฐใฎ่ฆ็ด (ใชใ‘ใ‚Œใฐend)ใ‚’ๆŒ‡ใ™ใ€‚
  • $B_{j-D}$ ใกใ‚‡ใ†ใฉใ‚’ใ‚คใƒ†ใƒฌใƒผใ‚ฟใฏๆŒ‡ใ™ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ—ใ€ใใ†ใงใชใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚
  • $B_{j-D}$ ใกใ‚‡ใ†ใฉใฎ่ฆ็ด ใŒใชใ‘ใ‚Œใฐใ€ $B_{j-D}$ ใ‚’่ถ…ใˆใ‚‹ๆœ€ๅฐใฎ่ฆ็ด (ใชใ‘ใ‚Œใฐend)ใ‚’ๆŒ‡ใ™ใ€‚
  • $B_{j-D}$ ใกใ‚‡ใ†ใฉใฎ่ฆ็ด ใŒไธ€ใคไปฅไธŠใ‚ใ‚Œใฐใ€ $B_{j-D}$ ใกใ‚‡ใ†ใฉ่ฆ็ด ใงๆœ€ใ‚‚ๆทปใˆๅญ—ใฎๅฐใ•ใ„็‰ฉใ‚’ๆŒ‡ใ™

ใ‚ใจใฏใ„ใคใ‚‚้€šใ‚Šใ€ใƒฉใƒ ใƒ€ๅผใ‚’ๆ›ธใ„ใฆไบŒๅˆ†ๆŽข็ดขใ—ใ€ๅŒบ้–“ใฎ็‚นใฎๆ•ฐใŒ $k$ ไปฅไธŠใซใชใ‚‹ $D$ ใ‚’ไบŒๅˆ†ๆŽข็ดขใ™ใ‚‹ใ€‚

*std::ranges::partition_point(std::views::iota(0LL, 1000000000LL), pred);

ใ“ใ†ใ™ใ‚‹ใจใ€ $B_{j-D}$ ใกใ‚‡ใ†ใฉใ€ $B_{j+D}$ ใกใ‚‡ใ†ใฉใฎ่ฆ็ด ใŒใ‚ใฃใฆใ‚‚็„กใใฆใ‚‚่ค‡ๆ•ฐๅ€‹ใงใ‚‚ใ€้–‰ๅŒบ้–“ $[B_{j-D}, B_{j+D}]$ ใซๅซใพใ‚Œใ‚‹ $A$ ใฎๆ•ฐใ‚’ๆญฃ็ขบใซๆฑ‚ใ‚ใ‚‹ใ“ใจใŒใงใใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๆญฃ็ขบใซๅฎŸ่ฃ…ใงใใŸใฎใฏ้ŽๅŽปๅ•ใฎๆ•™่จ“ใŒๆดปใใฆใ„ใ‚‹ใŒใ€ใ“ใฎๅ•้กŒใ‚’่งฃใ‘ใ‚‹ใจ่‡ชๅˆ†ใ‚’ไฟกใ˜ใ‚‰ใ‚Œใชใ‹ใฃใŸใฎใŒๅผฑใ„ใ€‚็ญ”ใˆใ‚‹ใฎใŒ่ท้›ขใงใ‚ใฃใฆ่ฆ็ด ใงใฏใชใ„ใ€ใจใ„ใ†ใ“ใจใ‚’่ชญใฟ้•ใˆใฆๅฐ‘ใ—ๆ™‚้–“ใŒๆŽ›ใ‹ใฃใฆใ—ใพใฃใŸ(ใ‚ˆใ่€ƒใˆใŸใ‚‰่ฆ็ด ใชใ‚‰ไธ€ๆ„ๆ€งใŒ็„กใ„)ใ€‚

ABC 364-E

ใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰

ๆœฌ็•ชไธญใฏ1 WAใ‚’ๅ–ใ‚Œใชใ„ใพใพใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใฆใ—ใพใฃใŸใ€‚ใ‚ณใƒณใƒ†ใ‚นใƒˆ็ต‚ไบ†ๅพŒใซไฝ•ใจใ‹่‡ชๅŠ›ACใ—ใŸใŒใ€ใŠใใ‚‰ใไฝ•ใ‹ๅฎŸ่ฃ…ใŒ้–“้•ใฃใฆใ„ใ‚‹ใ€‚

$M = 10002$ ใจใ—ใฆใ€ๆœ€ๅˆ $DP[M][M][N]$ ่งฃๆณ•ใ‚’ๆๅ‡บใ—ใฆTLEใ—ใŸใ€‚ใ‚ˆใ่€ƒใˆใŸใ‚‰ๅฝ“ใŸใ‚Šๅ‰ใ ใŒใ€Dๅ•้กŒใฎ็›ฎ้€”ใŒ็ซ‹ใŸใšใซ็„ฆใฃใฆใ„ใŸใฎใจใ€Cๅ•้กŒใ‚’DPใง่งฃใ“ใ†ใ—ใฆEๅ•้กŒใ‚’่ฆ‹ใฆๅ–œใณ้ŽใŽใŸใฎใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

$DP[N][M][N]$ ่งฃๆณ•ใซใ™ใ‚‹ใจTLEใ—ใชใ„ใ€‚ $DP[i][j][k]$ ใ‚’ใ€ $i=1..N$ ็•ช็›ฎใพใงใฎๆ–™็†ใ‚’ใฟใŸใจใใ€ ใ—ใ‚‡ใฃใฑใ•ใฎๅˆ่จˆใŒ $j=0..(Y+1)$ ใจใ—ใฆใ€้ฃŸในใŸๆ–™็†ๆ•ฐใŒ $0 \leq k \leq N$ ใฎใจใใฎ็”˜ใ•ใจๅฎš็พฉใ™ใ‚‹ใ€‚ $DP[N][M][N] = \infty$ ใŸใ ใ— $DP[0][0][0]=0$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚็”˜ใ•ใฏไธŠ้™ $X+1$ ใ€ใ—ใ‚‡ใฃใฑใ•ใฏไธŠ้™ $Y+1$ ใง้ฃฝๅ’Œใ™ใ‚‹ๅŠ ็ฎ—ใจใ—ใฆใ€ $DP[i+1][j+B][k+1] = DP[i][j][k] + A$ ใง้ท็งปใ™ใ‚‹ใ€‚ $DP[][M][k] &lt; \infty$ ใ‚’ๆบ€ใŸใ™ๆœ€ๅคงใฎ $k$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ใฏใšใชใฎใ ใŒใ€ใฉใ†ใ„ใ†่จณใ‹ 1 WA ใŒๅ–ใ‚Œใšใซใงใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใฆใ—ใพใฃใŸใ€‚ $A$ ใฎๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใŸใ‚‚ใฎใจใ€ $B$ ใฎๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใŸใ‚‚ใฎใ‚’ไธกๆ–นไฝฟใ†ใจACใ™ใ‚‹ใฎใ ใŒใ€ใใ‚‚ใใ‚‚ใ‚ฝใƒผใƒˆใŒๅฟ…่ฆใช็†็”ฑใŒๅˆ†ใ‹ใ‚‰ใชใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ้€šใ‚ŠใซๅฎŸ่ฃ…ใ™ใ‚‹ใจ ใ“ใฎใ‚ˆใ†ใซ ใชใ‚‹ใ€‚

  • DPใงๆฑ‚ใ‚ใ‚‹ใฎใŒใพใ ้ฃŸในใ‚‰ใ‚Œใ‚‹ใจใใ‹ใ‚‚ใ†้ฃŸในใ‚‰ใ‚Œใชใ„ใจใใ‹ใฎ้•ใ„ใงใ‚ใ‚‹ใ€‚ใ‚‚ใ†้ฃŸในใ‚‰ใ‚Œใชใ„ใจใใซใ™ใ‚‹ใจ้–“้•ใˆใ‚‹ใ€‚
  • $i$ ใพใง่ชฟในใ‚‹ใจใใฎ $k$ ใฏ $i$ ไปฅไธ‹ใงใ‚ˆใ„ใ€‚
  • 1 WAใฎๅŽŸๅ› ใฏใŠใใ‚‰ใ ใ“ใกใ‚‰ ใซใ‚ใ‚‹้€šใ‚Šใงใ‚ใ‚‹ใ€‚WAใ—ใŸ ใ‚ณใƒผใƒ‰ ใ ใจไปฅไธ‹ใง2ใ‚’่ฟ”ใ™(ไธŠใ‹ใ‚‰้ †ใซ้ฃŸในใ‚‹ใจ2ใ ใŒใ€ไธ‹ใ‹ใ‚‰้ †ใซ้ฃŸในใ‚‹ใจ3ใŒๆญฃ่งฃใงใ‚ใ‚‹)ใ€‚
3 10 10
2 5
2 6
6 2
โš ๏ธ **GitHub.com Fallback** โš ๏ธ