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

AtCoder Beginner Contest lessons learned (ๆœ€ๆ–ฐใพใง)

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

ใƒˆใƒƒใƒ—ใƒšใƒผใ‚ธใธ ๅ‰ใฎABC ๅ‚ๅŠ ่จ˜ใธ ๆฌกใฎABC ๅ‚ๅŠ ่จ˜ใธ

ABC 365-374 (ใ‚ณใƒณใƒ†ใ‚นใƒˆ41..50ๅ›ž็›ฎ)

ABC 365-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ41ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใŒๅ…จใๅˆ†ใ‹ใ‚‰ใšใ€2ๆ™‚้–“ไปฅไธŠๆŽ›ใ‘ใฆ่‡ชๅŠ›ACใ—ใŸใŒ้…ใ‹ใฃใŸใ€‚

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

ๅ•้กŒๆ–‡้€šใ‚Šใซๆกไปถๅˆ†ๅฒใ‚’ไธŠใ‹ใ‚‰ๆ›ธใใ€‚

Rใชใ‚‰ไธ€่กŒใงๆ›ธใ‘ใ‚‹ ใ€‚

cat(365+lubridate::leap_year(as.numeric(readLines("stdin", 1))))

ABC 365-B

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

ๅ€ค $A$ ใจๆทปใˆๅญ— $i$ ใ‚’็ต„ใซใ—ใŸ $(A_i,i)$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใฆใ€ไบŒ็•ช็›ฎใซๅคงใใ„่ฆ็ด ใ‚’่ฟ”ใ™ใ€‚ๅ…ฌๅผ่งฃ่ชฌใฏใ€ $A$ ใŒใใ‚Œใžใ‚Œ็›ธ็•ฐใชใ‚‹ใ“ใจใ‚’ๅˆฉ็”จใ—ใฆใ„ใ‚‹ใ€‚

ABC 365-C

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

ๅ…จๅ“กใฎไบค้€š่ฒปใฎๅ’ŒใŒ $M$ ไปฅไธ‹ใชใ‚‰ใ€ไบค้€š่ฒป่ฃœๅŠฉ้กใซไธŠ้™ใŒใ‚ใ‚ใ†ใŒใชใ‹ใ‚ใ†ใŒๅ…จๅ“กใฎไบค้€š่ฒปใ‚’ๆ‰•ใˆใ‚‹ใ€‚ใ“ใฎใจใใฏ infinite ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

$x$ ใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใฆไบŒๅˆ†ๆŽข็ดขใ™ใ‚‹ใจๆฑ‚ใพใ‚‹ใ€‚

ABC 365-D

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

่ฆ‹ใ‚‹ใ‹ใ‚‰ใซๅ‹•็š„่จˆ็”ปๆณ•ใงใ‚ใ‚‹ใ€‚

$i$ ็•ช็›ฎใŠใ‚ˆใณใใ‚Œใพใงใซใ‚ฐใƒผใ€ใƒ‘ใƒผใ€ใƒใƒงใ‚ญใงๅ‹ใฃใŸๅ›žๆ•ฐใ‚’ใใ‚Œใžใ‚Œ $DP[i][R,P,S]$ ใจใ™ใ‚‹ใ€‚ $i$ ็•ช็›ฎใฎๆ‰‹ใซใคใ„ใฆใ€ $DP$ ใ‚’ไปฅไธ‹ใฎ้€šใ‚Š้ท็งปใ™ใ‚‹ใ€‚ใ“ใ“ใง้’ๆœจๅ›ใฏใ‚ฐใƒผ $R$ ใ‚’ๅ‡บใ™ใ“ใจใซใ™ใ‚‹ใŒใ€ใใ‚Œไปฅๅค–ใฎๅ ดๅˆใฏๆ‰‹ใ‚’่ชญใฟๆ›ฟใˆใ‚‹ใ€‚

  • ้ซ˜ๆฉ‹ใใ‚“ใŒใƒใƒงใ‚ญ $S$ ใ‚’ๅ‡บใ™ใจ่ฒ ใ‘ใ‚‹ใฎใงใƒใƒงใ‚ญใฏๅ‡บใ›ใชใ„ใ€‚ $DP[i][S] = - \infty$ ใจใ™ใ‚‹
  • ้ซ˜ๆฉ‹ใใ‚“ใŒใ‚ฐใƒผ $R$ ใ‚’ๅ‡บใ™ใจ่ฒ ใ‘ใชใ„ใŒๅ‹ใฃใŸๅ›žๆ•ฐใฏๅข—ใˆใชใ„ใ€‚ๅŒใ˜ๆ‰‹ใฏไบŒๅบฆๅ‡บใ›ใชใ„ใฎใงใ€ $DP[i][R] = max(DP[i-1][P], DP[i-1][S])$ ใจใ™ใ‚‹
  • ้ซ˜ๆฉ‹ใใ‚“ใŒใƒ‘ใƒผ $P$ ใ‚’ๅ‡บใ™ใจๅ‹ใฃใŸๅ›žๆ•ฐใŒ1ๅข—ใˆใ‚‹ใ€‚ๅŒใ˜ๆ‰‹ใฏไบŒๅบฆๅ‡บใ›ใชใ„ใฎใงใ€ $DP[i][P] = 1 + max(DP[i-1][R], DP[i-1][S])$ ใจใ™ใ‚‹

$DP$ ใฎๅ–ใ‚Šใ†ใ‚‹ๅ€คใฎๆœ€ๅคงๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ใ˜ใ‚ƒใ‚“ใ‘ใ‚“ใฎๅ‹ใก่ฒ ใ‘ใ‚’้–ขๆ•ฐใซใ™ใ‚‹ใฎใซๆ‰‹ใ“ใšใฃใฆใ—ใพใฃใŸใ€‚่‹ฑ่ชžใฎๅ•้กŒๆ–‡ใซใฏใ€ใ˜ใ‚ƒใ‚“ใ‘ใ‚“ใฎ่ฆๅ‰‡ใŒๆ›ธใ„ใฆใ‚ใ‚‹ใ€‚

ABC 365-E

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

2ๆ™‚้–“15ๅˆ†ใกใ‚‡ใฃใจๆŽ›ใ‹ใฃใฆใ—ใพใฃใŸใ€‚ๅ•้กŒใฎๆง‹้€ ใ‚’็†่งฃใ—้–“้•ใˆใŸใฎใŒๆ•—ๅ› ใงใ‚ใ‚‹ใ€‚

ใ™ในใฆใฎใƒ“ใƒƒใƒˆใซใคใ„ใฆ็‹ฌ็ซ‹ใซๅ•้กŒใ‚’่€ƒใˆใ‚‹ใ€‚ๅŒบ้–“ๅ’Œใงใ‚ใ‚‹ใ“ใจใ‹ใ‚‰ $A$ ใซใฏ้ †ๅบใŒใ‚ใ‚Š้ †ไธๅŒใงใฏใชใ„ใ—ใ€ $A_j$ ใงใฏใชใ $A_i \oplus ... \oplus A_j$ ใฎๅŒบ้–“ๅ’Œใซๆ„ๅ‘ณใŒใ‚ใ‚‹ใ€‚ใ“ใฎใ“ใจใ‚’่ฆ‹ๆŠœใ‘ใชใ‹ใฃใŸใ€‚ใใ‚‚ใใ‚‚ๅŒบ้–“ๅ’Œใงใฏใชใ้€ฃ็ถšใ—ใชใใฆใ„ใ„ $A$ ใฎๅ’Œใชใ‚‰็ต„ใฟๅˆใ‚ใ›ใชใฎใง็ญ”ใˆใŒ64-bitใซๅŽใพใ‚‰ใชใ„ใ€‚

2ๆ™‚้–“ๆŽ›ใ‘ใฆACใ—ใŸๅ…ˆใฎใ‚ณใƒผใƒ‰ใฏใใ‚‚ใใ‚‚ใ“ใ‚Œใงๆญฃใ—ใ„ใฎใ‹ใฉใ†ใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใ‚’่ชญใ‚“ใงๅฎŸ่ฃ…ใ—ใŸใ‚ณใƒผใƒ‰ใฏใ“ใกใ‚‰ ใ€‚

ABC 366-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ42ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใฏๆ–น้‡่ฆ‹ใˆใŸใŒๅฎŸ่ฃ…ใŒ้€ฒใพใšใ€2ๆ™‚้–“่ฟ‘ใๆŽ›ใ‘ใฆ่‡ชๅŠ›ACใ—ใŸใŒ้…ใ‹ใฃใŸใ€‚

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

ๆ—ขใซๅพ—็ฅจใŒ้ŽๅŠๆ•ฐ $T,A \geq \lceil N/2 \rceil$ ใชใ‚‰ Yes ใ€ใใ†ใงใชใ‘ใ‚Œใฐ No ใงใ‚ใ‚‹ใ€‚

ABC 366-B

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

ๅ•้กŒใŒใจใฆใ‚‚ใ‚„ใ‚„ใ“ใ—ใ„ใ€‚13ๅˆ†่ฟ‘ใๆŽ›ใ‹ใฃใŸใ€‚

่ฆใ™ใ‚‹ใซๆ–‡ๅญ—ๅˆ—ใ‚’ๅณ90ๅบฆๅ›ž่ปขใ—ใฆใ€ๅ›ž่ปขๅพŒใฎๆ–‡ๅญ—ๅˆ—ใซใคใ„ใฆ

  • ๆœซๅฐพใฎ็ฉบ็™ฝใ‚’ๅ–ใ‚Š้™คใ
  • ๆœซๅฐพไปฅๅค–ใฎ็ฉบ็™ฝใ‚’ * ใซ็ฝฎใๆ›ใˆใ‚‹

ใจใ™ใ‚‹ใ€‚ๅ›ž่ปขๅพŒใฎๆ–‡ๅญ—ๅˆ—ใฏ้•ทใ• $N$ ใฎ็ฉบ็™ฝใ ใ‘ใฎๆ–‡ๅญ—ๅˆ—ใ‚’ๅˆๆœŸๅ€คใซใ™ใ‚‹ใจใ€ๆกไปถๅˆคๅฎšใŒๆฅฝใซใชใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใซใ‚ใ‚‹้€šใ‚Šใ€็ฉบ็™ฝใฎไปฃใ‚ใ‚Šใซ * ใ‚’ไฝฟใ†ๆ–นใŒ็ฐกๅ˜ใงใ‚ใ‚‹ใ€‚

ABC 366-C

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

Bๅ•้กŒใฎๅพŒใซใ“ใฎๅ•้กŒใŒใใฆใ€3ๅˆ†ๆŽ›ใ‹ใ‚‰ใšใซ่งฃใ‘ใŸใฎใงๆ•‘ใ‚ใ‚ŒใŸใ€‚

key ใŒ count(key) ๅ€‹ใ‚ใ‚‹ใ“ใจใ‚’้€ฃๆƒณ้…ๅˆ—ใซ่ผ‰ใ›ใฆใ€้€ฃๆƒณ้…ๅˆ—ใฎใ‚จใƒณใƒˆใƒชๆ•ฐใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ๅ€‹ๆ•ฐใŒ0ใซใชใฃใŸ key ใ‚’้€ฃๆƒณ้…ๅˆ—ใ‹ใ‚‰ๅ‰Š้™คใ™ใ‚‹ใ€‚ std::multiset ใ‚’ไฝฟใŠใ†ใจใ—ใฆๆ€ใ„ใจใฉใพใฃใŸใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏใƒ•ใƒฉใƒƒใƒˆใช้…ๅˆ—ใ‚’็”จใ„ใฆใ„ใ‚‹ใ€‚

ABC 366-D

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

ๅคšๆฌกๅ…ƒ็ดฏ็ฉๅ’Œใฎ็†่งฃๅบฆใƒ†ใ‚นใƒˆใงใ‚ใ‚‹ใ€‚

$Lx_{i}, Rx_{i}, Ly_{i}, Ry_{i}, Lz_{i}, Rz_{i}$ ใ‹ใ‚‰ๆˆใ‚‹็ซ‹ๆ–นไฝ“ใ‚’่€ƒใˆใ‚‹ใ€‚ๆœ€ๅˆใซไธ‰ๆฌกๅ…ƒ็ดฏ็ฉๅ’Œใ‚’ใ€ $z,y,x$ ๅบงๆจ™ใซใคใ„ใฆๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใ‚Œใงใ‚ฏใ‚จใƒชใซ $O(1)$ ใง็ญ”ใˆใ‚‰ใ‚Œใ‚‹ใ€‚

ไบŒๆฌกๅ…ƒ็ดฏ็ฉๅ’Œใฎๅปถ้•ทใงใ€ๅณ็ซฏใ‹ใ‚‰ๅบงๆจ™ใ‚’ๅฅ‡ๆ•ฐๅ€‹ๅค‰ใˆใŸใ‚‚ใฎใ‚’ๅผ•ใใ€ๅถๆ•ฐๅ€‹ๅค‰ใˆใŸใ‚‚ใฎใ‚’่ถณใ™ใ€ใจใ„ใ†ใฎใ‚’็นฐใ‚Š่ฟ”ใ™ใ€‚ๅ…ทไฝ“็š„ใซใฏใ€็ดฏ็ฉๅ’Œใฎใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใซใคใ„ใฆไปฅไธ‹ใฎ้€šใ‚Šใซใ™ใ‚‹ใ€‚ๅทฆ็ซฏใ‚’1ๅผ•ใใฎใ‚’ๅฟ˜ใ‚Œใชใ„ใ€‚

  • $(Rx_{i}, Ry_{i}, Rz_{i})$ ใ‚’่ถณใ™
  • $(Lx_{i} - 1, Ry_{i}, Rz_{i})$, $(Rx_{i}, Ly_{i} - 1, Rz_{i})$, $(Rx_{i}, Ry_{i}, Lz_{i} - 1)$ ใ‚’ๅผ•ใ
  • $(Lx_{i} - 1, Ly_{i} - 1, Rz_{i})$, $(Rx_{i}, Ly_{i} - 1, Lz_{i} - 1)$, $(Lx_{i} - 1, Ry_{i}, Lz_{i} - 1)$ ใ‚’่ถณใ™
  • $(Lx_{i} - 1, Ly_{i} - 1, Lz_{i} - 1)$ ใ‚’ๅผ•ใ

ABC 366-E

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

ใƒžใƒณใƒใƒƒใ‚ฟใƒณ่ท้›ขใชใฎใง45ๅบฆๅ›ž่ปขใ ใ‚ใ†ใจๆ€ใ„้•ใ„ใ—ใŸใพใพใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใฆใ—ใพใฃใŸใ€‚45ๅบฆๅ›ž่ปขใŒ่ฆใ‚‰ใชใ„ใ“ใจใŒๅˆ†ใ‹ใฃใŸๅพŒใ‚‚ๅฎŸ่ฃ…ใซๆ‰‹้–“ๅ–ใ‚Šใ€็ตๅฑ€่งฃใใพใง2ๆ™‚้–“ๆŽ›ใ‹ใฃใŸใ€‚

$X$ ๅบงๆจ™ใจ $Y$ ๅบงๆจ™ใฏๅˆฅใ€…ใซ่€ƒใˆใฆใ‚ˆใ„ใ€‚ $X$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใ€ๆœ€ๅฐๅ€คใ‚’ๅŽŸ็‚น(0)ใจใ—ใฆใ€ใใ‚Œไปฅๅค–ใฎ้ ‚็‚นใพใงใฎ่ท้›ขใฎ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚‹ใ€‚ใ‚ฝใƒผใƒˆๆธˆใฎๆทปใˆๅญ—ใง่ท้›ขใฎ็ดฏ็ฉๅ’Œใ‚’ $CX_i$ ใจใ™ใ‚‹ใ€‚ $Y$ ใ‚‚ๅŒๆง˜ใซ็ดฏ็ฉๅ’Œใ‚’ $CY_i$ ใจใ™ใ‚‹ใ€‚

$x$ ๅบงๆจ™ใฎๆŽข็ดข็ฏ„ๅ›ฒใฏใ€ $[min(X)-D, max(X)+D]$ ใงๅๅˆ†ใงใ‚ใ‚‹ใ€‚ๅˆถ็ด„ใ‹ใ‚‰ใ“ใ‚ŒใงTLEใ—ใชใ„ใ€‚ $y$ ๅบงๆจ™ใฎๆŽข็ดข็ฏ„ๅ›ฒใ‚‚ๅŒๆง˜ใซ $[min(Y)-D, max(Y)+D]$ ใซใ™ใ‚‹ใ€‚

$x$ ๅบงๆจ™ใ‚’ๅ…จๆŽข็ดขใ™ใ‚‹ๅ‰ใซใ€ $y$ ใจใ—ใฆใ‚ใ‚Šใ†ใ‚‹ๅ€คใ‚’ๆฑ‚ใ‚ใฆใŠใใ€‚ $y = [min(Y)-D, max(Y)+D]$ ใซใคใ„ใฆใ€ๅ„็‚นใ‹ใ‚‰ $y$ ใพใงใฎ่ท้›ขใฎๅ’Œ $s$ ใฏใ€ไปฅไธ‹ใฎ้€šใ‚Šๆฑ‚ใพใ‚‹ใ€‚

  • $y < Y_i$ ใจใชใ‚‹้ ‚็‚นๆ•ฐ $M$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใ‚Œใฏ std::ranges::upper_bound ใงๆฑ‚ใพใ‚‹ใ€‚
  • $M = N$ ใชใ‚‰ $y$ ใฎๅ€คใŒๅคงใใใฏใฟใ ใ—ใฆใ„ใ‚‹ใฎใงใ€ $s = N \times (y - min(Y)) - CY_{N}$ ใงใ‚ใ‚‹
  • $M = 0$ ใชใ‚‰ $y$ ใฎๅ€คใŒๅฐใ•ใใฏใฟใ ใ—ใฆใ„ใ‚‹ใฎใงใ€ $s = N \times (min(Y) - y) + CY_{N}$ ใงใ‚ใ‚‹
  • $0 < M < N$ ใชใ‚‰ $y$ ใ‚ˆใ‚Šๅ€คใŒๅคงใใช้ ‚็‚นใฏ $CY_{N} - CY_{M} - (N - M) \times (y - min(Y))$ ใ€ $y$ ใ‚ˆใ‚Šๅ€คใŒๅฐใ•ใช้ ‚็‚นใฏ $M \times (y - min(Y)) - CY_M$ ใ€ใ“ใ‚Œใ‚‰ใฎๅ’ŒใŒ $s$ ใงใ‚ใ‚‹ใ€‚

ใใ‚Œใžใ‚Œใฎ $y$ ใซใคใ„ใฆ $s$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใจใ€ใ‚ใ‚‹ $s \in [0..D]$ ใจใชใ‚‹ $y$ ใŒไฝ•้€šใ‚Šใ‚ใ‚‹ใ‹ๆฑ‚ใพใ‚‹ใ€‚ $y$ ใซใคใ„ใฆ่ท้›ข $s$ ไปฅๅ†…ใง้กŒๆ„ใ‚’ๆบ€ใŸใ™ใชใ‚‰่ท้›ข $s+1$ ไปฅๅ†…ใงใ‚‚้กŒๆ„ใ‚’ๆบ€ใŸใ™ใฎใงใ€ $s$ ใฎ็ดฏ็ฉๅ’Œ $CS[0..D]$ ใ‚’ๅ–ใ‚‹ใ€‚ใ“ใฎๆ„ๅ‘ณใฏๅพŒใงๅˆ†ใ‹ใ‚‹ใ€‚

ใปใผๅŒใ˜ใ“ใจใ‚’ $x$ ใซใคใ„ใฆๅ…จๆŽข็ดขใ™ใ‚‹ใ€‚ $x = [min(X)-D, max(X)+D]$ ใซใคใ„ใฆใ€ๅ„็‚นใ‹ใ‚‰ $y$ ใพใงใฎ่ท้›ขใฎๅ’Œ $t$ ใฏใ€ $y$ ใจๅŒๆง˜ใซๆฑ‚ใพใ‚‹ใ€‚่ท้›ขใฎๆฎ‹ใ‚Š $W = D - t$ ใŒ $W \leq 0$ ใชใ‚‰ใ€ใใฎ $x$ ใซๅฏพๅฟœใ™ใ‚‹ $y$ ใฏ $CS[W]$ ้€šใ‚Šใ‚ใ‚‹ใ€‚ใ“ใ“ใง $W$ ใŒ้กŒๆ„ใ‚’ๆบ€ใŸใ™ใชใ‚‰ $W - 1 \geq 0$ ใ‚‚้กŒๆ„ใ‚’ๆบ€ใŸใ™ใฎใงใ€็ดฏ็ฉๅ’Œ $CS$ ใŒๅฟ…่ฆใ ใฃใŸใ€‚

ใ™ในใฆใฎ $x$ ใซใคใ„ใฆใฎใ€ $W$ ใฎๅ’ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ใจใซใ‹ใ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚‹ๅ‡ฆ็†ใŒๅคšใ„ใ€‚ใจๆ€ใฃใŸใ‚‰ๅ…ฌๅผ่งฃ่ชฌใฏๅฐบๅ–ใ‚Šๆณ•ใงใ™ใฃใใ‚Šใ—ใŸใ‚ณใƒผใƒ‰ใงใ‚ใ‚‹ใ€‚็ขบใ‹ใซๅ…ฌๅผ่งฃ่ชฌใฎใ‚ณใƒผใƒ‰ใชใ‚‰ๆ—ฉใ ๅฎŸ่ฃ… ใงใใ‚‹ใ—ใ€็งใฎๅฎŸ่ฃ…ใฏๆ™‚้–“ใŒๆŽ›ใ‹ใ‚Šใ™ใŽใ‚‹ใ€‚

ABC 366-F

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

ใ‚ฝใƒผใƒˆใ—ใฆDPใ ใจๆ€ใฃใŸใ‚‰ใ‚„ใฃใฑใ‚Šใใ†ใ ใฃใŸใ€‚

ไธ€ๆฌกๆ–น็จ‹ๅผ $f(x) = Ax + B$ ใฏไปฅไธ‹ใฎ่กŒๅˆ—ๆผ”็ฎ— $Mv$ใง่กจ็พใงใใ‚‹ใ€‚

$$ M = \begin{pmatrix} A & B \\ 0 & 1 \\ \end{pmatrix} v = \begin{pmatrix} x \\ 1 \\ \end{pmatrix} $$

ไบŒใคใฎ่กŒๅˆ—ๆผ”็ฎ—ใฎ็ฉใฏๅฏๆ›ใงใฏใชใ„ใฎใงใ€ใฉใกใ‚‰ใ‚’ๅ…ˆใซๆŽ›ใ‘ใ‚‹ใ‹ใŒ้‡่ฆใงใ‚ใ‚‹ใ€‚

$$ L = \begin{pmatrix} A & B \\ 0 & 1 \\ \end{pmatrix} , R= \begin{pmatrix} C & D \\ 0 & 1 \\ \end{pmatrix} $$

ใฎ $LR, RL$ ใฏใใ‚Œใžใ‚Œ

$$ LR = \begin{pmatrix} AC & AD + B \\ 0 & 1 \\ \end{pmatrix} , RL = \begin{pmatrix} CA & CB + D \\ 0 & 1 \\ \end{pmatrix} $$

ใชใฎใงใ€ $x=1$ ใฎใจใ $LR > RL \Leftrightarrow B(1-C) > D(1-A)$ ใงใ‚ใ‚‹ใ€‚ๅพŒใ‹ใ‚‰ๆŽ›ใ‘ใ‚‹ๆ–นใŒ็ญ”ใˆใŒๅคงใใใชใ‚‹่กŒๅˆ—ใ‚’ๅพŒใงๆŽ›ใ‘ใ‚‹ใ‚ˆใ†ใช้ †ๅบใง่กŒๅˆ—ใ‚’ใ‚ฝใƒผใƒˆใ™ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ $M_{i=1..N}$ ใจ็ฝฎใใ€‚

่กŒๅˆ—ใ‚’ใ‚ฝใƒผใƒˆใ—ใŸใ‚‰DPใ™ใ‚‹ใ€‚ $DP[i=1..N][j=0..K]$ ใฏใ€ $i$ ็•ช็›ฎใพใงใฎ่กŒๅˆ—ใ‚’ $j$ ๅ€‹ๆŽ›ใ‘ใŸๆ™‚ใฎ่กŒๅˆ—ใงใ‚ใ‚‹ใ€‚ๅˆๆœŸๅ€คใฏๆ’็ญ‰่กŒๅˆ—ใซใ—ใฆใŠใ( $- \infty$ ใ ใจไธŠๆ‰‹ใใ„ใ‹ใชใ„)ใ€‚

$DP$ ใฎๆ›ดๆ–ฐๅผใฏ $DP[i+1][j+1] = max(DP[i+1][j+1], M_{i+1}DP[i][j])$ ใจใ—ใฆใ€ $max$ ใ‚’ $Mv$ ใคใพใ‚Š $A+B$ ใจๅฎš็พฉใ™ใ‚‹ใ€‚ๆœ€ๅพŒใซๆฑ‚ใพใฃใŸ $DP[N][K]$ ใฎ $A+B$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ใ‚ฝใƒผใƒˆใฎไธ็ญ‰ๅทใฎๅฎš็พฉใจDPใฎๅˆๆœŸๅ€คใซๆฐ—ใ‚’ไฝฟใ†ใŒใ€ๅŸบๆœฌๆ–น้‡ใฏ่ฆ‹ใˆใฆใ„ใŸใ€‚ใ“ใ‚Œใฏใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซ็ฒใ‚ŠใŸใ‹ใฃใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌใซใฏใ€็ญ”ใˆใฏ่กŒๅˆ—ใฎๆŽ›ใ‘ๆ–นใงๆฑบใพใ‚‹ใฎใง $f_{i}f_{j}(x)$ ใจ $f_{j}f_{i}(x)$ ใซไพใ‚‰ใชใ„ใจๆ›ธใ„ใฆใ‚ใ‚‹ใ€‚ใ“ใฎ็‚นใ‚’ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆ‚ฉใ‚“ใงใ—ใพใฃใŸใฎใงEๅ•้กŒใซๆˆปใฃใฆใ—ใพใฃใŸใฎใŒๆ•—ๅ› ใงใ‚ใ‚‹ใ€‚ๅ…ˆใฎ $LR$ ใ‚’่€ƒใˆใ‚‹ใจ $LRx = ACx + AD + B, RLx = ACx + CB + D$ ใชใฎใง็ขบใ‹ใซใใ†ใชใ‚‹ใ€‚

ABC 367-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ43ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใฏๆ–น้‡ใฏ่ฆ‹ใˆใŸใŒๅฎŸ่ฃ…ใŒ้€ฒใพใšใ€2ๆ™‚้–“่ฟ‘ใๆŽ›ใ‘ใฆ่‡ชๅŠ›ACใ—ใŸใŒ้…ใ‹ใฃใŸใ€‚Fๅ•้กŒใฏ15ๅˆ†ใง่งฃใ‘ใŸใŒใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใงใฏๆ‰‹้…ใ‚Œใงใ€่งฃใๅ•้กŒใ‚’้–“้•ใˆใŸใ€‚

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

ๅ…ฅๅŠ›ไพ‹ใŒใฉใ†ใ—ใฆใ‚‚ๅˆใ‚ใชใใฆใ€ๅ…ˆใซBๅ•้กŒใ‚’่งฃใ„ใŸใ€‚

$B < C$ ใชใ‚‰่ตทใใฆใ„ใ‚‹ใฎใฏใ€ $[0,B]$ ใพใŸใฏ $[C,24]$ ใงใ‚ใ‚‹ใ€‚ $B > C$ ใชใ‚‰่ตทใใฆใ„ใ‚‹ใฎใฏ $[B,C]$ ใงใ‚ใ‚‹ใ€‚ใ‚ˆใ่€ƒใˆใŸใ‚‰ๅฝ“ใŸใ‚Šๅ‰ใงใ€ๆกไปถใŒ or ใซใ™ในใใจใ“ใ‚ and ใจๆ›ธใ„ใŸ้–“้•ใ„ใ ใฃใŸใฎใ ใŒใ€ไธ€ๅบฆๆททไนฑใ™ใ‚‹ใจ้–“้•ใ„ใซใชใ‹ใชใ‹ๆฐ—ใŒไป˜ใ‹ใชใ„ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฎใƒฆใƒผใ‚ถ่งฃ่ชฌใซไธๅค‰้‡ใ‚’ไฝฟใฃใŸ่งฃใๆ–นใŒใ‚ใ‚‹ใ€‚็ขบใ‹ใซๆ—ฅไป˜ใŒๅค‰ใ‚ใ‚‹ใจใ“ใ‚ใฏใ€่ตทใใฆใ„ใ‚‹ใ‹ๅฏใฆใ„ใ‚‹ใ‹ใŒไธๅค‰้‡ใงใ‚ใ‚‹ใ€‚

ABC 367-B

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

Aๅ•้กŒใจๅŒๆง˜ใ€ใ‚„ใ‚„ใ“ใ—ใ่€ƒใˆใ‚‹ใจใพใ™ใพใ™ๅˆ†ใ‹ใ‚‰ใชใใชใ‚‹ใ€‚A,Bๅ•้กŒไฝตใ›ใฆ10ๅˆ†43็ง’ๆŽ›ใ‹ใฃใฆใ„ใ‚‹ใ€‚

ใ‚„ใ‚Šใ‹ใŸใฏ่‰ฒใ€…ใ‚ใ‚Šใใ†ใ ใŒใ€็ด ็›ดใชๆ–นๆณ•ใฏ . ใฎๅ‰ๅพŒใงๆ–‡ๅญ—ๅˆ—ใ‚’ๅˆ†ๅ‰ฒใ—ใฆใ€ๅ‰ใ‚’ๆ•ดๆ•ฐ้ƒจใ€ๅพŒใ‚’ๅฐๆ•ฐ้ƒจใซใ™ใ‚‹ใ€‚ๅฐๆ•ฐ้ƒจใฏๆœซๅฐพใ‹ใ‚‰0ใŒ็ถšใ„ใฆใ„ใ‚‹้™ใ‚Šๅ‰Š้™คใ™ใ‚‹ใ€‚ๅฐๆ•ฐ้ƒจใŒ็„กใใชใ‚Œใฐๆ•ดๆ•ฐ้ƒจใ ใ‘ๅ‡บๅŠ›ใ—ใ€ๅฐๆ•ฐ้ƒจใŒๆฎ‹ใฃใฆใ„ใ‚Œใฐๆ•ดๆ•ฐ้ƒจ . ๅฐๆ•ฐ้ƒจใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚ใ“ใฎๆ–น้‡ใงใ™ใฃใใ‚Šๅ†ๅฎŸ่ฃ…ใ™ใ‚‹ใจ ใ“ใฎใ‚ˆใ† ใซใชใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚’่ชญใ‚€ใจใ€ๅ…ฅๅŠ›ใฏๅฟ…ใšๅฐๆ•ฐใชใฎใงใ€ๆ•ดๆ•ฐ้ƒจใจๅฐๆ•ฐ้ƒจใ‚’ๅˆ†ใ‘ใชใใฆใ‚‚ใ‚ˆใ•ใใ†ใงใ‚ใ‚‹(ๆœซๅฐพใฎ . ใฏ้™คใ‹ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„)ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฎๆ–นๆณ•ใงๆ–‡ๅญ—ๅˆ—่กจ็พใฎไธธใ‚่ชคๅทฎใŒๅ•้กŒใซใชใ‚Šใใ†ใชใ‚‰ใ€ boost::multiprecision::cpp_dec_float_100 ใ‚’ไฝฟใ† ใ€‚

ABC 367-C

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

ๅˆถ็ด„ใ‹ใ‚‰ $5^8 = 390625$ ้€šใ‚Šใ—ใ‹ใชใ„ใฎใงๅ…จๆŽข็ดขใ™ใ‚‹ใ€‚

$0..5^8-1$ ใ‚’ๅ…จๆŽข็ดขใ—ใ€5้€ฒๆ•ฐ่กจ่จ˜ใ™ใ‚‹ใจ้•ทใ• $N$ ใฎๆ•ดๆ•ฐๅˆ—ใŒๅพ—ใ‚‰ใ‚Œใ‚‹ใ€‚ๆ•ดๆ•ฐๅˆ—ใฎ่ฆ็ด ใŒ0..4ใชใฎใงใ€1..5ใซ่ชญใฟๆ›ฟใˆใ‚‹ใ€‚ใ‚ใจใฏ้กŒๆ„ใ‚’ๆบ€ใŸใ›ใฐๆ•ดๆ•ฐๅˆ—ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

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

ABC 367-D

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

$modM$ ใ‚’ๆ•ฐใˆไธŠใ’ใ‚Œใฐใ„ใ„ใจ็›ด่ฆณ็š„ใซๅˆ†ใ‹ใ‚‹ใ€‚ๅ‡บ็™บใ™ใ‚‹ไผ‘ๆ†ฉๆ‰€ใŒไผ‘ๆ†ฉๆ‰€1ใฎใจใใ€็ดฏ็ฉๅ’Œ $C(i) = (\sum_{j=1}^{i} A_j)$ ใจใ—ใฆใ€ $C(i) modM = 0$ ใจใชใ‚‹ $C$ ใฎๆ•ฐใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ๅ…ทไฝ“็š„ใซใฏ $R[i=0..(M-1)]$ ใ‚’ใ€ $C(i) mod M = i$ ใจใชใ‚‹่ฆ็ด ๆ•ฐใจใ—ใ€ๅ‡บ็™บใ™ใ‚‹ไผ‘ๆ†ฉๆ‰€ใŒไผ‘ๆ†ฉๆ‰€1ใฎใจใ $R[0]$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ไปฅไธ‹ $R$ ใฎๆทปใˆๅญ—ใฏ $modM$ ใง่€ƒใˆใ‚‹ใ€‚ใพใŸ $S=C[N-1]$ ใจ็ฝฎใใ€‚

ๅ‡บ็™บใ™ใ‚‹ไผ‘ๆ†ฉๆ‰€ใ‚’ๆ™‚่จˆๅ›žใ‚Šใซไธ€ใค็งปใ‚‹ใ€‚ๅ‡บ็™บใ™ใ‚‹ไผ‘ๆ†ฉๆ‰€ใŒไผ‘ๆ†ฉๆ‰€2ใฎใจใใซใ€ๅ…ˆใฎ็ดฏ็ฉๅ’Œใ‚’ๅ†ๅˆฉ็”จใ™ใ‚‹ใ“ใจใ‚’่€ƒใˆใ‚‹(ใใ†ใ—ใชใ„ใจTLEใ™ใ‚‹ใฎใง)ใ€‚ไผ‘ๆ†ฉๆ‰€2ใ‹ใ‚‰ไผ‘ๆ†ฉๆ‰€1ใธใฎ่ฆ็ด ใ‚’ๅ‰Š้™คใ™ใ‚‹ใŸใ‚ใซใ€ $R[A_1]$ ใ‚’1ๆธ›ใ‚‰ใ™ใ€‚ๆฌกใซไผ‘ๆ†ฉๆ‰€Nใ‹ใ‚‰ไผ‘ๆ†ฉๆ‰€1ใธใฎ่ฆ็ด ใ‚’่ฟฝๅŠ ใ™ใ‚‹ใ€‚ $S$ ใซ $A[N]$ ใ‚’ๅŠ ใˆใ€ $R[S]$ ใ‚’1ๅข—ใ‚„ใ™ใ€‚ๅ‡บ็™บใ™ใ‚‹ไผ‘ๆ†ฉๆ‰€ใŒไผ‘ๆ†ฉๆ‰€2ใฎใจใ $R[C(1)]$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅŒๆง˜ใซไผ‘ๆ†ฉๆ‰€ $i$ ใซ็งปใ‚‹ใ€‚ $R[C(i-1)]$ ใ‚’1ๆธ›ใ‚‰ใ—ใ€ $S$ ใซ $A[i-2]$ ใ‚’ๅŠ ใˆใ€ $R[S]$ ใ‚’1ๅข—ใ‚„ใ—ใ€ $R[C(i-1)]$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฎใƒฆใƒผใ‚ถ่งฃ่ชฌ2ใฏไธ€ๅ‘จ่ถ…ใˆใ‚’็”จใ„ใฆใ‚‚ใฃใจใ™ใฃใใ‚Š่กจ็พใ—ใฆใ„ใ‚‹ใ€‚

ABC 367-E

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

2ๆ™‚้–“่ถ…ใˆใฎๆณฅๆฒผใ ใฃใŸใ€‚ๆ–น้‡ใฏ่ฆ‹ใˆใฆใ„ใ‚‹ใฎใซใ€ใ„ใคใพใง็ตŒใฃใฆใ‚‚ๅฎŸ่ฃ…ใŒ็ต‚ใ‚ใ‚‰ใชใ‹ใฃใŸใ€‚

ๅŸบๆœฌๆ–น้‡ใฏๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใฎใ‚ตใ‚คใ‚ฏใƒซๅˆ†่งฃใงใ‚ใ‚‹ใ€‚ $A_{X_i}$ ใ‚’ $B_i$ ใซใ™ใ‚‹ใจใ„ใ†ใ“ใจใฏใ€ ๆทปใˆๅญ—ใ ใ‘ใฟใ‚Œใฐ $X_i$ ใ‚’ $i$ ใซใ™ใ‚‹ใจใ„ใ†ใ“ใจใงใ‚ใ‚‹ใ€‚ใ“ใฎๅ‘ใใŒๅˆ†ใ‹ใ‚‰ใชใใชใฃใŸใพใพใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใฆใ—ใพใฃใŸใ€‚

$X_i$ ใ‹ใ‚‰ $i$ ใซๅ‘ใ‹ใ†่พบใซใคใ„ใฆๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’ไฝœใ‚‹ใ€‚ใ“ใฎๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’ๅผท้€ฃ็ตๆˆๅˆ†ๅˆ†่งฃใ™ใ‚‹ใจใ€ใ‚ตใ‚คใ‚ฏใƒซใจใใ‚Œไปฅๅค–ใซๅˆ†ใ‹ใ‚Œใ‚‹ใ€‚ใ“ใฎๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใฏใ‚ตใ‚คใ‚ฏใƒซใ‚’ๅ›žใ‚‹ใ‹ใ€ใ‚ตใ‚คใ‚ฏใƒซใ‹ใ‚‰ๅ‡บใฆใ„ใใ‹ใฉใกใ‚‰ใ‹ใงใ‚ใ‚‹ใ€‚ใ‚ตใ‚คใ‚ฏใƒซๅค–ใซๅ…ฅใ‚‹ใ“ใจใฏใชใ„ใ€‚ใ“ใ‚Œใฏ $X_i$ ใ‹ใ‚‰ $i$ ใธใฎๅฏพๅฟœใŒไธ€ๅฏพๅคšใงใ‚ใ‚‹(ๅคšๅฏพไธ€ใงใฏใชใ„)ใ“ใจใ‹ใ‚‰่จ€ใˆใ‚‹ใ€‚ใ“ใฎ็†่งฃใŒ้€†ใ ใฃใŸใŸใ‚ใซ่งฃใ‘ใชใ‹ใฃใŸใ€‚

ใ‚ตใ‚คใ‚ฏใƒซ $C$ ใฎ้ ‚็‚นใซใคใ„ใฆใฏใ€ $|C| mod K$ ๅ›žๅ‰ใฎๆ“ไฝœใ‚’ๅๆ˜ ใ™ใ‚‹ใ€‚ใ‚ˆใฃใฆ้ ‚็‚น $v$ ใ‹ใ‚‰ใ‚ตใ‚คใ‚ฏใƒซใ‚’้€†ๅ‘ใใซใŸใฉใ‚Šๆœ€ๅˆใฏ้ ‚็‚น $u$ ใ‹ใ‚‰ๆฅใŸใจๅˆ†ใ‹ใ‚‹ใจใ€ๆ“ไฝœ็ตๆžœ $P$ ใซใคใ„ใฆใ€ $P[v] = A[u]$ ใจ่งฃใ‚‹ใ€‚ใ“ใฎ้€†ๅ‘ใใซใŸใฉใ‚‹ใฎใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

ใ‚ตใ‚คใ‚ฏใƒซๅค–ใฎ้ ‚็‚นใซใคใ„ใฆใฏใใฎใพใพๆฑ‚ใ‚ใ‚‹ใจTLEใ™ใ‚‹ใฎใงDFSใ™ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎใ‚ตใ‚คใ‚ฏใƒซ $C$ ใฎ้ ‚็‚น $v \in C$ ใ‚’่ตท็‚นใซDFSใ™ใ‚‹ใ€‚

  • ไปŠๆณจ็›ฎใ—ใฆใ„ใ‚‹้ ‚็‚นใ‚’ $u$ ใจใ™ใ‚‹ใ€‚ๅˆๆœŸๅ€คใฏ $u = v$ ใจใ™ใ‚‹ใ€‚
  • ใ‚ตใ‚คใ‚ฏใƒซใฎ้ ‚็‚นใฏๆŽข็ดขใ—ใชใ„
  • $v$ ใ‹ใ‚‰ $u$ ใธใฎใƒ‘ใ‚น $p$ ใ‚’ๅ†ๅธฐใฎๅผ•ๆ•ฐใซๆŒใคใ€‚DFSใง่‘‰ใซๅ‘ใ‹ใ†ใจใใฏใƒ‘ใ‚น $p$ ใฎๆœซๅฐพใซ $u$ ใ‚’ๅŠ ใˆใ€ๅ‡บใŸๅพŒใซใƒ‘ใ‚นใฎๆœซๅฐพใ‹ใ‚‰ $u$ ใ‚’้™คใใ€‚
  • $|p| \geq k$ ใชใ‚‰ใ€ใƒ‘ใ‚นใฎๅพŒใ‚ใ‹ใ‚‰ $k$ ็•ช็›ฎใฎ้ ‚็‚น $w$ ใฎๅ€คใŒๆ“ไฝœ็ตๆžœใซใชใ‚‹ใ€‚ $P[u] = A[w]$ ใงใ‚ใ‚‹ใ€‚
  • $|p| < k$ ใชใ‚‰ใ€ใ‚ตใ‚คใ‚ฏใƒซใ‚’ $v$ ใ‹ใ‚‰ $k-|p|$ ๅ›ž้€†ๅ‘ใใซใŸใฉใ‚‹ใ€‚ใŸใฉใฃใŸๅ…ˆใฎ้ ‚็‚นใŒ $w$ ใชใ‚‰ใ€ $P[u] = A[w]$ ใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ1ใฏใƒ€ใƒ–ใƒชใƒณใ‚ฐใ ใฃใŸใ€‚ $N^2$ ่ฆ็ด ใฎ่กจใŒๅฟ…่ฆใจๅ‹˜้•ใ„ใ—ใฆ่ซฆใ‚ใฆใ—ใพใฃใŸใฎใ ใŒใ€ใƒ€ใƒ–ใƒชใƒณใ‚ฐใชใ‚‰ $Nlog(N)$ ใฎ่กจใซๅŽใพใ‚‹ใ€‚ใ“ใฎใ“ใจใซๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใ€‚ใ‚ฐใƒฉใƒ•ใ‚ˆใ‚Šใ‚‚ใฏใ‚‹ใ‹ใซ็ฐกๆฝ”ใช ใ‚ณใƒผใƒ‰ ใง่งฃใ‘ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ2ใฏ (ใ‚ชใƒ•ใƒฉใ‚คใƒณ็‰ˆใฎ) level ancestor ใ‚’็”จใ„ใŸ่งฃๆณ•ใงใ€็งใฎ่งฃๆณ•ใจใปใจใ‚“ใฉๅŒใ˜ใงใ‚ใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌ2ใฏfunctional graphใฎใใ‚Œใžใ‚Œใฎๅผฑ้€ฃ็ตๆˆๅˆ†ใŒใ‚ตใ‚คใ‚ฏใƒซใ‚’ใกใ‚‡ใ†ใฉไธ€ใคใšใคๆŒใคใ“ใจใ‚’ๅˆฉ็”จใ—ใฆใ„ใ‚‹ใŒใ€ๅฎŸ่ณช็š„ใซใฏไธŠ่จ˜ใจๅŒใ˜ใงใ‚ใ‚‹ใ€‚็งใฎ็™บๆƒณ่‡ชไฝ“ใฏใ‚ˆใ‹ใฃใŸใŒๅฎŸ่ฃ…ๅŠ›ใŒ่ถณใ‚Šใชใ‹ใฃใŸใ€‚

ABC 367-F

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

Eๅ•้กŒใ‚’ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซ่งฃใ„ใฆใ€็ถšใ„ใฆFๅ•้กŒใ‚’่งฃใ„ใŸใ‚‰15ๅˆ†3็ง’ๅพŒใซ่งฃใ‘ใฆใ—ใพใฃใŸใ€‚ไฝ•ๅบฆ็›ฎใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใŒใ€Eๅ•้กŒใซ็†ฑไธญใ™ใ‚‹ใ‚ใพใ‚Š่งฃใๅ•้กŒใ‚’้ธใถใฎใ‚’้–“้•ใˆใŸใ€‚ๅ‚ๅŠ ่€…ใซใจใฃใฆใฎๅ•้กŒใฎ้›ฃๆ˜“ๅบฆใจ่‡ชๅˆ†ใซใจใฃใฆใฎๅ•้กŒใฎ้›ฃๆ˜“ๅบฆใŒใพใŸ้€†่ปขใ—ใฆใ„ใŸใฎใ ใŒใ€ใใ‚Œใงใ‚‚่งฃใๅ•้กŒใฏไธŠๆ‰‹ใ้ธใถๅฟ…่ฆใŒใ‚ใ‚‹ใ€‚ใ‚ใ‚‹ใ„ใฏFๅ•้กŒใ‚’่งฃใ‘ใชใ„ใจใ„ใ†ๆ€ใ„่พผใฟใ‚’ๆจใฆใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ใฎใ ใŒใ€ๆœฌ็•ชใงFๅ•้กŒใ‚’่งฃใ‘ใชใ„ใจ่งฃใ่‡ชไฟกใŒใชใ„ใจใ„ใ†ๅ ‚ใ€…ๅทกใ‚Šใซใชใฃใฆใ„ใ‚‹ใ€‚

$N$ ใŒๅฐใ•ใ‘ใ‚Œใฐใ€ๆ•ดๆ•ฐๅˆ—ใซ็พใ‚Œใ‚‹ๆ•ฐๅ€ค $i=1..N$ ใซใคใ„ใฆใ€ๆ•ดๆ•ฐๅˆ—ใฎๆทปใˆๅญ— $j=1..N$ ใซๆฒฟใฃใฆ็™ปๅ ดๅ›žๆ•ฐใฎ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚Œใฐใ„ใ„ใ€‚ใใ†ใ™ใ‚Œใฐใ‚ฏใ‚จใƒชใฎๆ•ฐใจใ€ๆ•ดๆ•ฐๅˆ—ใซ็พใ‚Œใ‚‹ๆ•ฐๅ€คใซ็จฎ้กžใซๆฏ”ไพ‹ใ—ใŸๅ›žๆ•ฐใง็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚ใ—ใ‹ใ—ใ“ใ“ใงใฏ $O(N^2)$ ใจใชใฃใฆTLEใ™ใ‚‹ใ€‚

ใใ“ใง็ดฏ็ฉๅ’Œใ‚’้ซ˜้€Ÿใซๅ–ใ‚‹ๆ–นๆณ•ใ‚’่€ƒใˆใ‚‹ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใฆๅŒบ้–“ๅ’Œใ‚’ๅ–ใ‚Œใฐ้€Ÿใใ†ใงใ‚ใ‚‹ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใฎๆทปใˆๅญ— $i$ ใซ่ผ‰ใ›ใ‚‹ใ‚‚ใฎใฏ $A_i, B_i$ ใใฎใ‚‚ใฎใงใฏใชใ $1..N$ ใซๅฏพๅฟœใ™ใ‚‹ไนฑๆ•ฐใซใ™ใ‚Œใฐใ€ใปใผ็ขบๅฎŸใซACใ™ใ‚‹ใ€‚Zobrist Hashใฎ็™บๆƒณใงใ‚ใ‚‹ใ€‚่‡ชๅŠ›ใงๆ€ใ„ใคใ„ใŸใŒใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆๅ‡บใ—ใชใ‘ใ‚Œใฐๅพ—็‚นใฏใ‚‚ใ‚‰ใˆใชใ„ใ€‚

็ด ๆ•ฐใงๅ‰ฒใ‚‹ใฎใงใฏใชใใ€ไนฑๆ•ฐใฎ็ฏ„ๅ›ฒใ‚’ $1..2^{64}-1$ ใซใ—ใฆใ‚‚ใƒใƒƒใ‚ทใƒฅ่ก็ชใ›ใšACใงใใŸใ€‚ใ“ใฎใ“ใจใฏๅ…ฌๅผ่งฃ่ชฌ2ใซ่ชฌๆ˜ŽใŒใ‚ใ‚‹ใ€‚

ABC 368-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ44ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Fใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚ๅ‰ๅ›žใฏใ™ใฃ้ฃ›ใฐใ—ใฆๆณฃใ„ใŸFๅ•้กŒใซไปŠๅ›žใฏๆ•‘ใ‚ใ‚ŒใŸใ€‚Gๅ•้กŒใฏๆ™‚้–“ใฏใ‚ใฃใŸใŒๅ…จใ่ฆ‹ๅฝ“ใŒใคใ‹ใชใ‹ใฃใŸใ€‚

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

ๅ›ž่ปขๆ“ไฝœใชใฎใง std::rotate ใงๆ›ธใ‘ใ‚‹ใ€‚0-based indexingใงใ€ๅ…ƒใ€…ใฎๅฑฑใฎไธŠใ‹ใ‚‰ $N-K$ ๆžš็›ฎใฎใ‚ซใƒผใƒ‰ใŒไธ€็•ชไธŠใซๆฅใ‚‹ใ€‚ๅ…ฌๅผ่งฃ่ชฌใซใ‚‚ std::rotate ใŒ็ดนไป‹ใ•ใ‚Œใฆใ„ใ‚‹ใ€‚

ABC 368-B

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

ๅ•้กŒๆ–‡้€šใ‚ŠใซๅฎŸ่ฃ…ใ—ใฆใ‚‚TLEใ—ใชใ„ใ€‚ $A$ ใซ $0$ ใ‚’ๅซใ‚ใชใ„ใ€ $A$ ใฎ่ฆ็ด ๆ•ฐใŒ2ๆœชๆบ€ใซใชใฃใŸใ‚‰ๆ‰“ใกๅˆ‡ใ‚‹ใ“ใจใซๆณจๆ„ใ™ใ‚‹ใ€‚

ABC 368-C

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

ๅ…ฅๅŠ›ไพ‹ใŒๅˆใ‚ใšใซ็„ฆใฃใŸใ€‚

$T$ ใจใ€ใ„ใพ็›ฎใฎๅ‰ใซใ„ใ‚‹ๆ•ต $i$ ใฎไฝ“ๅŠ› $H_i$ ใŒๆฑบใพใฃใฆใ„ใ‚‹ใจใ™ใ‚‹ใ€‚ๆ•ตใ‚’ๅ€’ใ—ใŸๆ™‚็‚นใง $T$ ใŒ $U$ ใซๅค‰ๅŒ–ใ™ใ‚‹ใ“ใจใ‚’่€ƒใˆใ‚‹ใ€‚ $U$ ใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใฆไบŒๅˆ†ๆŽข็ดขใ™ใ‚Œใฐ $U$ ใŒๆฑ‚ใพใ‚‹ใ€‚ $i$ ใ‚’1ๅข—ใ‚„ใ—ใ€ $U+1$ ใ‚’ $T$ ใซใ—ใฆ็นฐใ‚Š่ฟ”ใ™ใ€‚ใ“ใฎ็Šถๆณใ‚’ๆญฃ็ขบใซ่ชญใฟๅ–ใ‚‹ใฎใซ่‹ฆๅŠดใ—ใŸใ€‚

$x \in [T,U]$ ใ‚’ๅ›บๅฎšใ—ใŸใจใใ€ๆ•ตใซไธŽใˆใ‚‹ใƒ€ใƒกใƒผใ‚ธใฏไปฅไธ‹ใฎๅˆ่จˆ $S_{U}$ ใงใ‚ใ‚‹ใ€‚

  • ๅฐ‘ใชใใจใ‚‚ $x$ 1็จฎ้กžใซใคใ„ใฆ1ใƒ€ใƒกใƒผใ‚ธใ‚’ไธŽใˆใ‚‹ใฎใงใ€ $U - T + 1$
  • $x$ ใŒ3ใฎๅ€ๆ•ฐใชใ‚‰ไธŽใˆใ‚‹่ฟฝๅŠ ใฎใƒ€ใƒกใƒผใ‚ธ $2 \times ( \lfloor U / 3 \rfloor - \lfloor (T - 1) / 3 \rfloor)$

$S_{U} < H_i$ ใ‚’ๆกไปถใซไบŒๅˆ†ๆŽข็ดขใ™ใ‚‹ใจใ€ใ“ใฎๆกไปถใ‚’ๆบ€ใŸใ•ใชใ„ๆœ€ๅฐใฎ $U$ ใŒๅพ—ใ‚‰ใ‚Œใ‚‹ใ€‚ใ“ใฎใ‚ˆใ†ใช $U$ ใงๆ•ตใ‚’ๅ€’ใ›ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏใ€ $T$ 3ใ‚ปใƒƒใƒˆใงไฝ“ๅŠ›ใ‚’5ๆธ›ใ‚‰ใ›ใ‚‹ใ“ใจใ‚’ๅˆฉ็”จใ—ใฆ่จˆ็ฎ—ใ‚’็ฐก็•ฅๅŒ–ใ—ใฆใ„ใ‚‹ใ€‚ใŸใ—ใ‹ใซใ“ใฎใ‚ˆใ†ใซ ๅฎŸ่ฃ… ใงใใ‚‹ใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

ABC 368-D

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

Cๅ•้กŒใŒ่งฃใ‘ใชใ„็„ฆใ‚Šใ‹ใ‚‰ใ€Auxiliary Treeใฎใ‚ณใƒผใƒ‰ใ‚’ใ‚ˆใ็†่งฃใ—ใชใ„ใพใพ้ฉ็”จใ—ใ€ๅ…ฅๅŠ›ไพ‹ใฎไธ€้ƒจใฏ้€šใฃใŸใŒWAใฎๅฑฑใ‚’็ฏ‰ใ„ใŸใ€‚ใจใ„ใ†ใ‹ๅ…ฅๅŠ›ไพ‹ใ•ใˆๅˆใฃใฆใ„ใชใ‹ใฃใŸใ€‚ๅ‹‡ใฟ่ถณใ™ใŽใ‚‹ใŒใ€Cๅ•้กŒใŒ่งฃใ‘ใชใ„ใ€Dๅ•้กŒใ‚‚่งฃใๆ–นใŒๆ€ใ„ใคใ‹ใชใ„ใจ็„ฆใ‚Šใ™ใŽใŸใ€‚ใ“ใ‚ŒใŒใชใ‹ใฃใŸใ‚‰ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใฏใ‚‚ใฃใจ่‰ฏใ‹ใฃใŸใŒใ€้€ฃๆ•—ไธญใง่‡ชไฟกใŒ็„กใ„ใจ่ฒ ใฎใ‚นใƒ‘ใ‚คใƒฉใƒซใซๅ…ฅใ‚‹ใ€‚

่งฃใคใพใ‚Š $V$ ใฎ้ ‚็‚นใ‚’ๅซใฟ้ ‚็‚นๆ•ฐใŒๆœ€ๅฐใฎๆœจใฎ้ ‚็‚น้›†ๅˆใ‚’ $S$ ใจใ™ใ‚‹ใ€‚ๅˆๆœŸๅ€คใ‚’ $S = V$ ใจใ™ใ‚‹ใ€‚

$V$ ใŒ็ฉบใงใชใ„ใฎใงใ€ $V_1$ ใ‚’ๆ นใจใ™ใ‚‹ๆœจใ‚’่€ƒใˆใฆDFSใ™ใ‚‹ใ€‚DFSใฎ้€”ไธญใง $V$ ใซๅฑžใ™ใ‚‹้ ‚็‚นใŒใ‚ใฃใŸใ‚‰ $S$ ใซๅŠ ใˆใ‚‹ใ€‚ๅŠ ใˆใ‚‹ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใฏใ€ๆœจใฎ่‘‰ใ‹ใ‚‰ๆ นใซๆˆปใ‚‹ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใงใ‚ใ‚‹ใ€‚ ${V_1, U_1, U_2, V_i}$ ใจใ„ใ†ใƒ‘ใ‚นใŒใ‚ใฃใŸใจใใซใ€ $U_2, U_1$ ใฎ้ †ใซ $S$ ใซๅŠ ใˆใ‚‹ใ€‚ใ‚ˆใ‚Šๆญฃ็ขบใซใฏ้ ‚็‚น $U$ ใฎ้ƒจๅˆ†ๆœจใซ $V$ ใซๅฑžใ™ใ‚‹้ ‚็‚นใŒไธ€ใคไปฅไธŠใ‚ใฃใŸใ‚‰ $U$ ใ‚’ $S$ ใซๅŠ ใˆใ‚‹ใ€‚

DFSใชใฎใง้ ‚็‚นใ‚’ใŸใฉใ‚‹ๅ›žๆ•ฐใฏ $O(N)$ ใงใ‚ใ‚‹ใ€‚

ๅฎŸใฏๅ…ธๅž‹90-035ใฎAuxiliary Treeใฎใ‚ณใƒผใƒ‰ใซ1่ถณใ—ใŸใ‚‚ใฎใŒ ๆญฃ่งฃ ใ ใฃใŸใ€‚ใ ใจใ™ใ‚Œใฐใปใผๆญฃ่งฃใ ใฃใŸใฎใ ใŒใ€ใ‚ใ–ใ‚ใ–้–“้•ใฃใŸใ‚ณใƒผใƒ‰ใซๅค‰ใˆใฆๆๅ‡บใ—ใŸใฎใฏใ€ใ‚„ใฏใ‚ŠCๅ•้กŒใ‚’่งฃใ‘ใชใ„็„ฆใ‚Šใ‹ใ‚‰ใฉใ†ใ‹ใ—ใฆใ„ใŸใ€‚

ABC 368-F

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

ไน…ใ—ใถใ‚ŠใซGrundyๆ•ฐใ‚’ABCใง่ฆ‹ใŸใ€‚ARC ๆฐดdiffใ‚’ๆœ€่ฟ‘่งฃใ„ใŸใฎใงใ€ไปŠๅ›žใฎใ‚ˆใ†ใชๅ…ธๅž‹็š„ใชGrundyๆ•ฐๅ•้กŒใซๅฏพๅ‡ฆใงใใŸใ€‚ใ‚‚ใ†ๅฐ‘ใ—Grundyๆ•ฐใฎๅ•้กŒใ‚’่งฃใๆ–นใŒใ„ใ„ใ ใ‚ใ†ใ€‚้‰„ๅ‰‡ๆœฌใซ่ผ‰ใฃใฆใ„ใ‚‹ใ‹ใคARC ๆฐดdiffใง้ ปๅ‡บใ‹ใคABC ๆฐดdiffใงใ‚ใพใ‚Š่ฆ‹ใชใ„ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใจ่จ€ใˆใฐใ€Grundyๆ•ฐใจไธๅค‰้‡ใชใฎใงใ€ไธๅค‰้‡ใ‚‚้›ใˆใŸๆ–นใŒใ„ใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚

ๅง‹ใ‚ใฏ็ด„ๆ•ฐใฎๆ•ฐใ ใจๆ€ใฃใฆๅ…ฅๅŠ›ไพ‹ใŒๅˆใ‚ใชใ‹ใฃใŸใฎใง็ด ๅ› ๆ•ฐใฎๆ•ฐใซๅˆ‡ใ‚Šๆ›ฟใˆใŸใ‚‰ACใ—ใŸใ€‚็ขบใ‹ใซ1ไปฅๅค–ใงๅ‰ฒใ‚‹ใจใใ€ๆœ€ๅคงใงๆฎ‹ใ‚Šไฝ•ๅ›žๅ‰ฒใ‚Œใ‚‹ใ‹ใฏ็ด ๅ› ๆ•ฐใฎๆ•ฐใงใ‚ใ‚‹ใ€‚็ด ๅ› ๆ•ฐ1ๅ€‹ใงๅ‰ฒใ‚Œใฐๆฎ‹ใ‚Šๅ›žๆ•ฐใŒ1ๆธ›ใ‚‹ใ€‚

ใใ†ใจ่งฃใ‚Œใฐใ“ใฎๅ•้กŒใฏNimใจGrundyๆ•ฐใงใ‚ใ‚Š $A_i$ ใฎ็ด ๅ› ๆ•ฐใฎๆ•ฐใ‚’ $C_i$ ใจใ™ใ‚Œใฐใ€ $\oplus A$ ใŒ0ใชใ‚‰ๅพŒๆ‰‹ๅฟ…ๅ‹ใ€ใใ†ใงใชใ‘ใ‚Œใฐๅ…ˆๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚

ใคใ„ใซใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซFๅ•้กŒใ‚’ๆญฃ่งฃใงใใŸใ€‚Fๅ•้กŒใ‚’่ชญใ‚€ๆ™‚้–“ใŒใ‚‚ใฃใŸใ„ใชใ„ใจ็„ฆใฃใฆๅ•้กŒๆ–‡ใ‚’่ชญใฟๅฟ˜ใ‚Œใ‚‹ใ€ใจใ„ใ†็™–ใ‚’ใŠใ‚ใ‚Šใซใ—ใŸใ„ใ€‚

ABC 368-G

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซใฏ48ๅˆ†ใ‚ใฃใŸใŒใชใ™ใ™ในใŒ็„กใ‹ใฃใŸใ€‚ไปŠๆ—ฅใ‚‚6ๅฎŒใฏ้ ใ‹ใฃใŸใ€‚

ๅ•้กŒๆ–‡ใฎๅคชๅญ—ใฎ้ƒจๅˆ†ใŒ้‡่ฆใชๅˆถ็ด„ใงใ‚ใ‚‹ใ€‚ใ‚ฏใ‚จใƒชๅฝ“ใŸใ‚Šไน—็ฎ—ใฏ60ๅ›žใ—ใ‹ใงใใชใ„ใ€‚ใ“ใ†ใ„ใ†ๅˆถ็ด„ใฎไธŽใˆๆ–นใฏใ•ใฃใฑใ‚Šๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚ๅ…ฌๅผ่งฃ่ชฌ1ใ‚’่ชญใ‚“ใงใ€ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ไฝฟใฃใŸ่งฃๆณ•ใฏ ใ“ใกใ‚‰ ใ€‚ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซใฏใ€ $A$ ใ‚’ๅ€คใฎๅฏ็ฎ—ใ€ $B$ ใ‚’ๅ€คใŒ2ๆœชๆบ€ใ‹ใฉใ†ใ‹ใฎlogical ANDใ‚’่ผ‰ใ›ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒช1,2ใฏ $A,B$ ใŠใ‚ˆใณใใ‚Œใ‚‰ใฎใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใ‚ฏใ‚จใƒช3ใฏใ€ใพใšๅ…ฌๅผ่งฃ่ชฌ้€šใ‚Šใ€็ญ”ใˆใฎๅˆๆœŸๅ€คใ‚’ $S = A[l]$ ใซใ™ใ‚‹ใ€‚ $l$ ใ‚’1ๅข—ใ‚„ใ—ใฆใ‹ใ‚‰ไปฅไธ‹ใ‚’็นฐใ‚Š่ฟ”ใ™ใ€‚

  • $l \geq r$ ใชใ‚‰็ต‚ไบ†ใ™ใ‚‹ใ€‚่งฃ่ชฌใซใ‚ใ‚‹้€šใ‚Š60ๅ›žใƒซใƒผใƒ—ใ™ใ‚‹ใจ็ต‚ไบ†ใ™ใ‚‹ใ€‚
  • $l$ ไปฅไธŠใง $B < 2$ ใ‚’ๆบ€ใŸใ™็ฏ„ๅ›ฒใฎๅณ็ซฏ $p \geq l$ ใ‚’่ฆ‹ใคใ‘ใ‚‹ใ€‚ segtree:max_right ใ‚’ไฝฟใ†ใ€‚
  • $S$ ใซ $A[l..min(r-1 , p)]$ ใ‚’่ถณใ™
  • $p < r$ ใชใ‚‰ $max(S + A[p], S \times B[p])$ ใง $S$ ใ‚’็ฝฎใๆ›ใˆใ‚‹
  • $l$ ใ‚’ $p + 1$ ใซใ™ใ‚‹

้…ๅปถใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใซ่ผ‰ใ›ใ‚ˆใ†ใจใ—ใฆๅคฑๆ•—ใ—ใŸใฎใ ใŒใ€ๅ…ฌๅผ่งฃ่ชฌ2ใฎ้€šใ‚Šไธ€ๆฌก้–ขๆ•ฐใ‚’่ผ‰ใ›ใฆๅˆๆˆใ™ใ‚Œใฐใ„ใ„ใ‚‰ใ—ใ„ใ€‚็งใซใฏใจใฆใ‚‚ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๅฎŒๆˆใ•ใ›ใ‚‰ใ‚Œใ‚‹ๆฐ—ใŒใ—ใชใ„ใ€‚

ABC 369-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ45ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใฏๅˆถ็ด„ใ‚’่ฆ‹่ฝใจใ—ใฆ่งฃใ‘ใšใ€Fๅ•้กŒใ‚’่ชญใ‚“ใ ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

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

$A \leq B$ ใจใ™ใ‚‹(ใใ†ใงใชใ‘ใ‚Œใฐ $A,B$ ใ‚’ๅ…ฅใ‚Œๆ›ฟใˆใ‚‹)ใ€‚

$(x = A-(B-A), A, B)$ , $(A, x = (A+B)/2, B)$ , $(A ,B, x = A+(B-A))$ ใŒ็ญ‰ๅทฎๆ•ฐๅˆ—ใฎๅ€™่ฃœใชใฎใงใ€ $x$ ใ‚’้‡่ค‡ใชใ—ใงๆ•ฐใˆใ‚‹ใจ็ญ”ใˆใซใชใ‚‹ใ€‚ใŸใ ใ— $(A+B)/2$ ใŒๆ•ดๆ•ฐใงใชใ„ๅ ดๅˆใฏๆ•ฐใˆใชใ„ใ€‚

ABC 369-B

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

ๅทฆๆ‰‹ใจๅณๆ‰‹ใฏใใ‚Œใžใ‚Œ็‹ฌ็ซ‹ใซ่€ƒใˆใฆใ‚ˆใ„ใ€‚

ๅทฆๆ‰‹ใงๆŠผใ™้ต็›คใ ใ‘่€ƒใˆใ€ใใฎๅบงๆจ™ใ‚’ $L = (L_1, ..., L_M)$ ใจใ™ใ‚‹ใ€‚ $|L| \leq 1$ ใชใ‚‰็–ฒๅŠดๅบฆใฏ0ใงใ‚ใ‚‹ใ€‚ $|L| > 1$ ใฎใจใใฏ $L$ ใฎ้šฃๅŒๅฃซใฎ่ฆ็ด ใฎ็ตถๅฏพๅ€คใฎๅทฎใ‚’ๅ–ใฃใฆ่ถณใ™ใ€‚ใคใพใ‚Š $\sum_{i=1}^{|L|-1} |L_{i+1} - L_{i}|$ ใŒๅทฆๆ‰‹ใฎ็–ฒๅŠดๅบฆใงใ‚ใ‚‹ใ€‚

ๅณๆ‰‹ใซใคใ„ใฆใ‚‚ๅŒๆง˜ใซๆฑ‚ใ‚ใ€ไธกๆ‰‹ใฎ็–ฒๅŠดๅบฆใฎๅ’ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 369-C

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

$A$ ใฎๅทฎๅˆ† $D = (D_1 = A_2 - A_1, ... , D_{N-1} = A_{N} - A_{N-1})$ ใ‚’ๅ–ใ‚‹ใ€‚ๅŒใ˜ๅทฎๅˆ† $D$ ใŒ็ถšใ‘ใฐ $A$ ใง็ญ‰ๅทฎๆ•ฐๅˆ—ใ‚’ๆง‹ๆˆใงใใ€ใใ†ใงใชใ‘ใ‚Œใฐ็ญ‰ๅทฎๆ•ฐๅˆ—ใ‚’ๆง‹ๆˆใงใใชใ„ใ€‚

ใ‚ˆใฃใฆ $D$ ใ‚’ใƒฉใƒณใƒฌใƒณใ‚ฐใ‚น็ฌฆๅทๅŒ–ใ—ใ€ใใ‚Œใžใ‚Œใฎใƒฉใƒณ้•ทใ‚’ $L_1, ... L_M$ ใจใ™ใ‚‹ใ€‚ใƒฉใƒณ้•ทใŒ $x > 0$ ใฎใจใใ€ $A$ ใฎ้€ฃ็ถš $x+1$ ๅ€‹ใฎ็ญ‰ๅทฎๆ•ฐๅˆ—(ๅทฎใŒ $x$ ๅ€‹)ใ‚’1้€šใ‚Šใ€ $A$ ใฎ้€ฃ็ถš $x$ ๅ€‹ใฎ็ญ‰ๅทฎๆ•ฐๅˆ—ใ‚’2้€šใ‚Šใ€ไปฅไธ‹ๅŒๆง˜ใซใ—ใฆ $A$ ใฎ้€ฃ็ถš $2$ ๅ€‹ใฎ็ญ‰ๅทฎๆ•ฐๅˆ—ใ‚’ $x$ ้€šใ‚Šไฝœใ‚Œใ‚‹ใ€‚ใ“ใ‚Œใ‚’ใพใจใ‚ใ‚‹ใจ $x(x+1)/2$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚

ใ“ใ‚Œใ‚‰ใ‚’ใ™ในใฆใฎใƒฉใƒณใซใคใ„ใฆ่ถณใ—ใ€้•ทใ•1ใฎๆ•ฐๅˆ—ใฏๅธธใซ็ญ‰ๅทฎๆ•ฐๅˆ—ใชใฎใง $N$ ใ‚’่ถณใ™ใจ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 369-D

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

ใ„ใ‹ใซใ‚‚DPใงใ‚ใ‚‹ใ€‚

ใ“ใ‚Œใพใงๅ€’ใ—ใŸใƒขใƒณใ‚นใ‚ฟใƒผใŒๅถๆ•ฐใ‹ๅฅ‡ๆ•ฐใ‹ใงๅ ดๅˆๅˆ†ใ‘ใ—ใฆ็Šถๆ…‹้ท็งปใ™ใ‚‹ใ€‚ $DP[i][jMod2]$ ใ‚’ใ€ $i$ ็•ช็›ฎใพใงใฎใƒขใƒณใ‚นใ‚ฟใƒผใ‚’็›ธๆ‰‹ใซใ—ใ€ใใ‚Œใพใง $j$ ไฝ“ๅ€’ใ—ใŸใจใใฎ็ตŒ้จ“ๅ€คใจใ™ใ‚‹ใ€‚ๅˆๆœŸๅ€คใฏ $DP[0][0] = 0, DP[0][1] = - \infty$ ใจใ™ใ‚‹ใ€‚

ไปฅไธ‹ใฎ็Šถๆ…‹้ท็งปใ‚’่กŒใ†ใ€‚

  • $DP[i+1][1] = max(DP[i][1], DP[i][0] + A_i)$ ใคใพใ‚Š้€ƒใŒใ™ใจ็ตŒ้จ“ๅ€คใŒๅพ—ใ‚‰ใ‚Œใšใ€ๅ€’ใ—ใŸใ‚‰ $X$ ็ตŒ้จ“ๅ€คใ‚’ๅพ—ใ‚‹ใ€‚
  • $DP[i+1][0] = max(DP[i][0], DP[i][1] + A_i + A_i)$ ใคใพใ‚Š้€ƒใŒใ™ใจ็ตŒ้จ“ๅ€คใŒๅพ—ใ‚‰ใ‚Œใšใ€ๅ€’ใ—ใŸใ‚‰ $X + X$ ็ตŒ้จ“ๅ€คใ‚’ๅพ—ใ‚‹ใ€‚

็ญ”ใˆใฏ $max(DP[N])$ ใงใ‚ใ‚‹ใ€‚

ABC 369-E

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

ๅˆถ็ด„ใ‚’่ฆ‹่ฝใจใ—ใŸใ€‚

$Q$ ใŒๅคงใใ„ใ“ใจใซๆฐ—ใ‚’ๅ–ใ‚‰ใ‚Œใฆ $K \leq 5$ ใ‚’่ฆ‹่ฝใจใ—ใŸใ€‚ $K$ ใŒๅคงใใ„ๆ™‚ใฎ่งฃๆณ•ใ‚’ๆŽขใ—ใฆ็ญ”ใˆใŒๅ‡บใšใ€Fๅ•้กŒใ‚‚่งฃใ‘ใšใ€่งฃใ‘ใ‚‹ๅ•้กŒใ‚’่ฝใจใ—ใฆใ—ใพใฃใŸใ€‚

$K$ ใŒๅฐใ•ใ„ใฎใงใ€็ซฏใฎๆธกใ‚Šๆ–นใฏ $K! \times 2^K = 3840$ ้€šใ‚Šใ—ใ‹ใชใ„ใ€‚ใ‚ฏใ‚จใƒชใ‚’ๅ…จ้ƒจๅ‡ฆ็†ใ—ใฆใ‚‚11520000้€šใ‚Šใงใ‚ใ‚‹ใ€‚ใใ‚Œใซๆฏ”ในใฆใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใฎ่จˆ็ฎ—ใฏ $N^3$ ใง 64000000ๅ›žใงใ‚ใ‚Šใ€ใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใŒ้–“ใซๅˆใ†ใชใ‚‰ใ‚ฏใ‚จใƒชใ‚‚้–“ใซๅˆใ†ใจไบˆๆƒณใงใใ‚‹ใ€‚ๅฎŸ้š› 1316ms ใงACใ™ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒชใ‚’่ชญใ‚€ๅ‰ใซใ€ใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใงไปปๆ„ใฎ2้ ‚็‚น้–“ใฎ่ท้›ขใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ๅˆๆœŸๅ€คใฏๅณถ่‡ช่บซใธใฎ่ท้›ขใŒ0ใ€็›ดๆŽฅๆฉ‹ใงใคใชใŒใฃใฆใ„ใ‚‹ๅณถใฏ่ค‡ๆ•ฐใ‚ใ‚‹ๆฉ‹ใฎๆœ€็Ÿญๆ™‚้–“ใ€ใใ‚Œไปฅๅค–ใฎๅณถใฏ็„ก้™ๅคงๆ™‚้–“ใจใ™ใ‚‹ใ€‚

ใคใŽใซๅ„ใ‚ฏใ‚จใƒชใ‚’็‹ฌ็ซ‹ใซๅ‡ฆ็†ใ™ใ‚‹ใ€‚ใ™ใงใซ่ฟฐในใŸ้€šใ‚Šใ€ $B$ ใ‚’ใฉใฎ้ †ใงๆธกใ‚‹ใ‹ใฎ้ †ๅˆ—็ต„ใฟๅˆใ‚ใ›ใ™ในใฆใ€็ซฏใ‚’ $U$ ใ‹ใ‚‰ $V$ ใซ่กŒใใ‹ $V$ ใ‹ใ‚‰ $U$ ใซ่กŒใใ‹ใฎใƒ“ใƒƒใƒˆๅ…จๆŽข็ดขใ‚’่กŒใ†ใ€‚ $B$ ใงไธŽใˆใ‚‰ใ‚Œใ‚‹ๆฉ‹ใฏๅฟ…ใš1ๅ›žๆธกใ‚‹ใฎใงใใฎใ‚ณใ‚นใƒˆใ‚’ๆœ€ไฝŽๅ€คใจใ—ใฆใ€้ ‚็‚น1ใ‹ใ‚‰ๆœ€ๅˆใฎๆฉ‹ใ€ๆฉ‹ใ‹ใ‚‰ๆฉ‹ใ€ๆœ€ๅพŒใฎๆฉ‹ใ‹ใ‚‰้ ‚็‚นNใธใฎๆ™‚้–“ใ‚’่ถณใ™ใ€‚ใ“ใ‚Œใ‚‰ใฎๆœ€ๅฐๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 369-F

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

ๅ…จใๅˆ†ใ‹ใ‚‰ใชใ„ใฎใง่งฃ่ชฌACใ—ใŸใ€‚

ใ‚ใ‚‹ใ‚ณใ‚คใƒณใ‚’ๆ‹พใฃใŸๅพŒใซๆฌกใฎใ‚ณใ‚คใƒณใ‚’ๆ‹พใ†ใจใ„ใ†ๅ‰ๅพŒ้–ขไฟ‚ใ‚’็ตในใฐใ„ใ„ใฎใ ใŒใ€ไธŠๆ‰‹ใ„ๆ–นๆณ•ใŒใฟใคใ‹ใ‚‰ใšTLEใ—ใŸใ€‚่งฃ่ชฌใซใ‚ใ‚‹ใ‚ˆใ†ใซLISใงๆฑ‚ใ‚ใ‚‹ใ€‚

่งฃ่ชฌใ‚’่จ€ใ„ๆ›ใˆใ‚‹ใจใ€ใ‚ใ‚‹ไฝ็ฝฎ $(r,c)$ ใซใ‚ใ‚‹ใ‚ณใ‚คใƒณใ‚’ๆ‹พใ†ใชใ‚‰ใใฎๅ‰ใซๆ‹พใˆใ‚‹ใ‚ณใ‚คใƒณใฏใ€ ๅˆ— $1..c$ ใซใคใ„ใฆใ€ๅŒใ˜่กŒใพใŸใฏไธŠใซใ‚ใ‚‹่กŒใงใ‚ใ‚‹ใ€‚ๅ‰ใซๆ‹พใˆใ‚‹ใ‚ณใ‚คใƒณใฎใ†ใกใ“ใ‚Œใพใงๆ‹พใฃใŸๆ•ฐใŒๆœ€ใ‚‚ใ‚ณใ‚คใƒณใ‚’้ธใถใ€‚ใชใŠๅทฆไธŠใซใฏๅฟ…ใšใ‚ณใ‚คใƒณ $0$ ใŒใ€ๅณไธ‹ใซใฏๅฟ…ใšใ‚ณใ‚คใƒณ $N+1$ ใŒใ‚ใ‚‹ใ‚‚ใฎใจใ™ใ‚‹ใ€‚

ใ“ใ“ใงๅ‰ใฎใ‚ณใ‚คใƒณใ‚’้ธใถใฎใŒLISใ ใŒใ€็›ธๅค‰ใ‚ใ‚‰ใšLISใฎ่งฃใๆ–นใŒๅˆ†ใ‹ใ‚‰ใชใ„ใฎใงใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใง่งฃใ„ใŸใ€‚

  • ๅŒบ้–“maxใ‚’่ฟ”ใ™ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจ $T$ ใ‚’ไฝœใ‚‹ใ€‚่ฆ็ด ๆ•ฐใฏ $W$ ใงใ€่ฆ็ด ใฏใ‚ใ‚‹ๅˆ—ใซใŠใ„ใฆใใ‚Œใพใงๆ‹พใฃใŸใ‚ณใ‚คใƒณใฎๆ•ฐใงใ‚ใ‚‹ใ€‚
  • ไปŠๅ›žใฏLISใฎ้•ทใ•ใ ใ‘ใงใชใLISใ‚’ๅ†็พใ™ใ‚‹ใฎใงใ€ๆทปใˆๅญ— $i=0..(N+1)$ ใฎใ‚ณใ‚คใƒณใฎๅ‰ใซๆ‹พใฃใŸใ‚ณใ‚คใƒณใฎๆทปใˆๅญ— $prevs[i]$ ใ€ใ‚ใ‚‹ๅˆ—ใงๆœ€ๅพŒใซๆ‹พใฃใŸใ‚ณใ‚คใƒณใฎๆทปใˆๅญ— $cols[1..W]$ ใ‚’็ฎก็†ใ™ใ‚‹ใ€‚
  • ๅˆๆœŸๅ€คใฏๅทฆไธŠใฎใ‚ณใ‚คใƒณใ‚’ๆ‹พใฃใŸ็Šถๆ…‹ใงใ‚ใ‚‹ใ€‚ $T[] = 0, T[1] = 1$ , $prevs[] = -1, prevs[0]=-1$ , $cols[] = -1, cols[0]=0$ ใจใ™ใ‚‹ใ€‚

ใ‚ณใ‚คใƒณ $i=0..(N+1)$ ใŒ $(r,c)$ ใซใ‚ใ‚‹ใจใใ€LISใ‚’ๆฑ‚ใ‚ใชใŒใ‚‰ไธŠ่จ˜ใฎใƒ‡ใƒผใ‚ฟใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚

  • LISใ‚’ๆง‹ๆˆใ™ใ‚‹ใ€ใ“ใ‚Œใพใงๆ‹พใฃใŸๆ•ฐใŒๆœ€ใ‚‚ๅคšใ„ใ‚ณใ‚คใƒณใŒ $v$ ๅ€‹ใงใ‚ใ‚‹ใจใ v=segree.prod(0,c+1) ใงๆฑ‚ใพใ‚‹
  • $v$ ใจใชใ‚‹ๆœ€ๅทฆๅˆ—ใฎๆทปใˆๅญ— $pos$ ใฏ ใ€ pos=segtree.max_right(0, x < v) ใงๆฑ‚ใพใ‚‹
  • ๅ‰ใซๆ‹พใ†ใ‚ณใ‚คใƒณใฏ $prev = cols[pos]$ ใงใ‚ใ‚‹
  • ใ“ใฎใ‚ณใ‚คใƒณใฎๅ‰ใซ $prev$ ใ‚’ๆ‹พใ†ใ“ใจใ‚’ใ€ $prevs[i] = prev$ ใง่จญๅฎšใ™ใ‚‹
  • ๅˆ— $c$ ใงใ“ใฎใ‚ณใ‚คใƒณใ‚’ๆ‹พใฃใŸใ“ใจใ‚’ใ€ $cols[c] = i$ ใง่จญๅฎšใ™ใ‚‹
  • ๆ‹พใฃใŸใ‚ณใ‚คใƒณใฎๆ•ฐใ‚’ segtree.max_right(c, v+1) ใง่จญๅฎšใ™ใ‚‹

ใ‚ณใ‚คใƒณ $N+1$ ใ‹ใ‚‰ $prevs[N+1]$ ใ‚’้€†ใซใŸใฉใ‚‹ใ“ใจใงใ€ๆ‹พใ†ใ‚ณใ‚คใƒณใฎ้€†้ †ใŒๆฑ‚ใพใ‚‹ใ€‚ๆญฃ้ †ใซๆˆปใ—ใฆใƒ‘ใ‚นใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ABC 370-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ46ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใ‚’่‹ฆใ—ใฟใคใคACใ—ใฆhighestใ€Fๅ•้กŒใ‚’่ชญใ‚“ใ ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

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

$(L,R)=(1,0)$ , $(L,R)=(0,1)$ ใ€ใใ‚Œไปฅๅค–ใงๅˆ†ๅฒใ—ใฆๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ABC 370-B

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

$A_{i,j}$ ใ‚’่ชญใฟ่พผใ‚“ใ ใ‚‰ $A_{i,j}, A_{j,i}$ ใฎไธกๆ–นใซ่จญๅฎšใ™ใ‚‹ใ€‚ $A_{i,i}$ ใŒใ‚ใ‚‹ใฎใงๅฟ˜ใ‚Œใšใซ่ชญใฟใ“ใ‚€ใ€‚

ๅพŒใฏ $p=1$ ใ‚’ๅˆๆœŸๅ€คใจใ—ใฆ $p = A_{p,1..N}$ ใจ็Šถๆ…‹้ท็งปใ™ใ‚‹ใ€‚

ABC 370-C

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

ๅ…ˆ้€ฑใฏๅˆถ็ด„ใ‚’่ฆ‹่ฝใจใ—ใฆๆณฃใ„ใŸใฎใงใ€ไปŠ้€ฑใฏๅˆถ็ด„ใ‚’ใ‚ˆใ่ชญใ‚“ใ ใ€‚

$N = |S|$ ใจ็ฝฎใใ€‚ $S$ ใฎๆ–‡ๅญ—ใ‚’1ๆ–‡ๅญ—ๆ›ธใๆ›ใˆใฆใงใใ‚‹ๆ–‡ๅญ—ๅˆ—ใฏๆœ€ๅคง $N$ ้€šใ‚Šใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ $S$ ใฎๆ–‡ๅญ—ใ‚’1ๆ–‡ๅญ—ๆ›ธใๆ›ใˆใฆใงใใ‚‹ๆ–‡ๅญ—ๅˆ—็พคใฎใ†ใกใ€่พžๆ›ธ้ †ใงๆœ€ๅฐใฎใ‚‚ใฎใ‚’้ธใ‚“ใง้ท็งปใ™ใ‚‹ใ€‚

1ๅ›ž้ท็งปใ™ใ‚‹ใ”ใจใซใ€ $S$ ใจ $T$ ใจไธไธ€่‡ดใชๆ–‡ๅญ—ใฏไธ€ใคๆธ›ใ‚‹ใฎใงๆœ€ๅคง $N$ ๅ›ž้ท็งปใ™ใ‚‹ใจ $S=T$ ใซใชใ‚‹ใ€‚ใ‚ˆใฃใฆๆ–‡ๅญ—ใฎ็ฝฎใๆ›ใˆใฏ $O(N^2)$ ๅ›žใ€ๆ–‡ๅญ—ๅˆ—ใ‚’ใ‚ณใƒ”ใƒผใ™ใ‚‹ใ‚ณใ‚นใƒˆใŒ $O(N)$ ใชใฎใงใ€่จˆ็ฎ—้‡ใฏ $O(N^3)$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’่ฆ‹ๆŠœใ„ใฆCๅ•้กŒใ‚’7ๅˆ†7็ง’ใง่งฃใ„ใŸใฎใงใ€Eๅ•้กŒใ‚’่งฃใๆ™‚้–“ใ‚’ๆปๅ‡บใงใใŸใ€‚

ABC 370-D

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

ใƒ‡ใƒผใ‚ฟๆง‹้€ ใฏใ™ใๆตฎใ‹ใ‚“ใ ใฎใงไธๅฏงใซๅฎŸ่ฃ…ใ—ใŸใ€‚ใ“ใ“ใงๆ™‚้–“ใ‚’็จผใ„ใ ใฎใงEๅ•้กŒใŒ้–“ใซๅˆใฃใŸใ€‚

std::vector<std::set<Num>> ๅž‹ใฎๅค‰ๆ•ฐใ‚’็”จๆ„ใ—ใฆใ€ๅˆ— $r$ ใซใ‚ใ‚‹ๅฃใ‚’ $Rows[r]$ ใ€่กŒ $c$ ใซใ‚ใ‚‹ๅฃใ‚’ $Cols[c]$ ใงไฟๆŒใ™ใ‚‹ใ€‚ใ‚ใจใฏๅ•้กŒๆ–‡้€šใ‚ŠใซๅฎŸ่ฃ…ใ™ใ‚‹ใ€‚

  • $(r,c)$ ใซๅฃใŒใ‚ใ‚Œใฐใ€ๅˆ—ใจ่กŒใ‹ใ‚‰้™คใใ€‚ๅฃ $(r,c)$ ใฏ $Rows$ ใจ $Cols$ ใฎไธกๆ–นใ‚ใ‚‹ใ‹ใ€ไธกๆ–นใจใ‚‚็„กใ„ใ‹ใฉใกใ‚‰ใ‹ใชใฎใงใ€ๅ‰่€…ใŒใ‚ใ‚ŒใฐๅพŒ่€…ใฎๅญ˜ๅœจใƒใ‚งใƒƒใ‚ฏใฏ็œ็•ฅใงใใ‚‹ใ€‚
  • ใใ†ใงใชใ‘ใ‚Œใฐ $(r,c)$ ใฎๅทฆๅณใฎๅฃใ‚’ๆŽขใ—ใฆ้™คใใ€‚ $r$ ่กŒใซๆณจ็›ฎใ™ใ‚‹ใ€‚ Rows[r].lower_bound(c) ใ‚’ไฝฟใฃใฆ $c$ ใฎ็›ดๅพŒใฎๅˆ—ใ‚’่ฆ‹ใคใ‘ใ€ใ‚คใƒ†ใƒฌใƒผใ‚ฟใ‚’ไธ€ใคๅ‰ใซใ—ใฆ $c$ ใฎ็›ดๅ‰ใฎๅˆ—ใ‚’่ฆ‹ใคใ‘ใ‚‹ใ€‚็„กๅŠนใชใ‚คใƒ†ใƒฌใƒผใ‚ฟใ‚’ใ‚ขใ‚ฏใ‚ปใ‚นใ—ใชใ„ใ‚ˆใ†ใซๆฐ—ใ‚’ไป˜ใ‘ใ‚‹ใ€‚ $Rows$ ใ‹ใ‚‰ๅฃใ‚’้™คใ„ใŸๅพŒใซใ€ $Cols$ ใ‹ใ‚‰ใ‚‚ๅฃใ‚’้™คใใ€‚
  • ๅŒๆง˜ใซ $(r,c)$ ใฎไธŠไธ‹ใฎๅฃใ‚’ Cols[c].lower_bound(r) ใงๆŽขใ—ใฆ้™คใใ€‚

4ๆ–นๅ‘ใ‚’ใ‚ณใƒ”ใƒšใงไฝœใฃใŸใ‚ณใƒผใƒ‰ใฏๅฎŸ่ฃ…ใŒใ‚„ใ‚„ใ“ใ—ใใ€ใ‚คใƒ†ใƒฌใƒผใ‚ฟๅ‘จใ‚Šใฎๆœชๅฎš็พฉๅ‹•ไฝœใ‚’่ธใ‚“ใงใ—ใพใฃใŸใŒใ€่ฝใก็€ใ„ใฆๆŒใ„ใŸใ€‚ใ‚ณใƒ”ใƒšใ‚’ๅฐ‘ใ—ๆธ›ใ‚‰ใ™ใจ ใ“ใ†ใชใ‚‹ ใ€‚ๅ…ฌๅผ่งฃ่ชฌใฏ std::prev ใ‚’ไฝฟใ„ใ€ๅฃใฎๆ•ฐใฏๆœ€ๅพŒใซใพใจใ‚ใฆๆ•ฐใˆใ‚‹ใ“ใจใงใ‚ณใƒผใƒ‰ใ‚’็Ÿญใใ—ใฆใ„ใ‚‹ใ€‚

ABC 370-E

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

C,Dๅ•้กŒใง็จผใ„ใ ๆ™‚้–“ใง่งฃใ„ใŸใ€‚

DPใ ใจๅˆ†ใ‹ใ‚‹ใŒใ€็ดฏ็ฉๅ’Œใ‚’ใ„ใ„ๆ„Ÿใ˜ใซ้€ฃๆƒณ้…ๅˆ—ใซ่ผ‰ใ›ใชใ„ใจTLEใ—ใใ†ใ ใจๅˆ†ใ‹ใ‚‹ใ€‚

ๅ‰ๅ‡ฆ็†ใจใ—ใฆใ€็ดฏ็ฉๅ’Œ $C_i = \sum_{j=1}^i A_j$ ใ‚’ๆฑ‚ใ‚ใฆใŠใใ€‚ไพฟๅฎœไธŠ $C_0 = 0$ ใจใ™ใ‚‹ใ€‚ $A_{i=1..N}$ ใ‚’ๅณ็ซฏใจใ™ใ‚‹้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใจใ—ใฆๅ–ใ‚Šใ†ใ‚‹็ต„ใฟๅˆใ‚ใ›ใฎๆ•ฐใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚

$l &lt; i$ ใซใคใ„ใฆใ€ $[l,i]$ ใ‚’้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใจใ—ใฆๅ–ใ‚Œใ‚‹ๆกไปถใฏ $\sum_{j=l}^{i} A_j \ne K$ ใฎใจใใงใ‚ใ‚‹ใ€‚ใ„ใ„ใ‹ใˆใ‚Œใฐ $C_i - C_{l-1} \ne K$ ใฎใจใใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ $l=1..(i-1)$ ใซใคใ„ใฆ้€ๆฌก็š„ใซๆฑ‚ใ‚ใ‚‹ใจTLEใ™ใ‚‹ใฎใง้ซ˜้€ŸๅŒ–ใ™ใ‚‹ใ€‚

$A_1$ ใ‹ใ‚‰ $A_j$ ใพใงใฎ้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใฎๅ’Œใฏ $C_j$ ใงใ‚ใ‚Šใ€ๅ’ŒใŒ $S=C_j$ ใจใชใ‚‹้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใŒๅ–ใ‚Šใ†ใ‚‹็ต„ใฟๅˆใ‚ใ›ใฎๆ•ฐใ‚’ $T[S]$ ใจใ™ใ‚‹ใ€‚ $T$ ใฏ้€ฃๆƒณ้…ๅˆ—ใงใ‚ใ‚Šใ€ $T$ ใซ่ผ‰ใฃใฆใ„ใชใ„่ฆ็ด ใซใคใ„ใฆใฏ็ต„ใฟๅˆใ‚ใ›ใฎๆ•ฐใŒ0ใจใฟใชใ™ใ€‚

ๅณ็ซฏใŒ $1..(i-1)$ ใซใคใ„ใฆ้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใŒๅ–ใ‚Šใ†ใ‚‹็ต„ใฟๅˆใ‚ใ›ใฎ็ทๅ’Œใ‚’ $accum$ ใ™ใ‚‹ใ€‚ $S_i = accum - T[C_i - K]$ ใŒใ€ $[l=1..(i-1),i]$ ใ‚’้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใจใ—ใฆๅ–ใ‚Œใ‚‹็ต„ใฟๅˆใ‚ใ›ใฎ็ทๆ•ฐใงใ‚ใ‚‹ใ€‚

ๆœ€ๅพŒใซใ€ $[1,i]$ ใ‚’ใพใ‚‹ใ”ใจใคใพใ‚Šใ‚’้€ฃ็ถš้ƒจๅˆ†ๅˆ—ใจใ—ใฆๅ–ใ‚Œใ‚‹ๆกไปถใฏ $C_i \ne K$ ใฎใจใใงใ‚ใ‚‹ใ€‚ใ“ใฎๆกไปถใŒๆˆใ‚Š็ซ‹ใคใจใใฏ $S_i$ ใ‚’1ๅข—ใ‚„ใ™ใ€‚

$accum = accum + S_i$ , $T[C_i] = T[C_i] + S_i$ ใจๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใ“ใ‚Œใ‚‰ใ‚’ $1..N$ ใซใคใ„ใฆๅๅพฉใ—ใ€็ญ”ใˆใฏ $S_N$ ใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใจๅŒใ˜่งฃใๆ–นใ ใจๆ€ใ†ใŒใ€็›ดๆ„Ÿ็š„ใŒๅƒใ„ใฆใ‚‚่จ€่‘‰ใจใ‚ณใƒผใƒ‰ใซใ™ใ‚‹ใฎใŒๅคงๅค‰ใงใ‚ใ‚‹ใ€‚

ABC 370-F

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

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใฏใชใ™ใ™ในใŒ็„กใใ€20ๅˆ†้–“้ †ไฝ่กจใ‚’็œบใ‚ใ‚‹ใ—ใ‹ใชใ‹ใฃใŸใ€‚

่งฃ่ชฌใ‚’่ชญใ‚“ใ ใŒใ€้กŒๆ„ใ‚’็†่งฃใ™ใ‚‹ใ“ใจใ‚‚่งฃๆณ•ใ‚’็†่งฃใ™ใ‚‹ใ“ใจใ‚‚้›ฃใ—ใ„ใ€‚ไป–ใฎๆ–นใฎใ‚ณใƒผใƒ‰ไพ‹ใ‚’ๅ‚่€ƒใซใ€0-based indexingใซๅค‰ๆ›ดใ—ใŸใŒใ€4971 msใงใŽใ‚ŠใŽใ‚Š้–“ใซๅˆใฃใŸใ€‚ไบŒๅˆ†ๆŽข็ดขใฎไธญใงmalloc (std::vectorใ‚’new)ใ™ใ‚‹ใจTLEใ™ใ‚‹ใฎใงใ€ไธๅฟ…่ฆใซmallocใ‚’็นฐใ‚Š่ฟ”ใ—ใฆใฏใ„ใ‘ใชใ„ใ“ใจใ‚’ๅญฆใ‚“ใ ใ€‚

ABC 371-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ47ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚Cๅ•้กŒใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใ€Gๅ•้กŒใฏๅ…ฅๅŠ›ไพ‹ใ ใ‘้€šใฃใŸใ€‚Cๅ•้กŒใฎไฝ™ใ‚Šใฎ่งฃใ‘ใชใ•ใซๆŒซใ‘ใใ†ใซใชใฃใŸใŒใ€็ตๆžœใฏhighestใ ใฃใŸใ€‚ๅ‹่ฒ ใฏๆœ€ๅพŒใพใง่ซฆใ‚ใฆใฏใชใ‚‰ใชใ„ใ€‚

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

ๅ…ฅๅŠ›ใซ็Ÿ›็›พใŒ็„กใ„ใ€ใจใ„ใ†ใ“ใจใŒ้‡่ฆใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆ $A &gt; B &gt; C$ , $A &gt; C &gt; B$ , $B &gt; A &gt; C$ , $B &gt; C &gt; A$ , $C &gt; A &gt; B$ , $C &gt; B &gt; A$ ใ‚’็ถฒ็พ…ใ™ใ‚‹ใ€‚ $S_{AB}$ ใฏ $\lnot S_{BA}$ ใงใ‚‚ใ‚ใ‚‹ใ€‚ไบŒ็•ช็›ฎใซๅนดไธŠใ€ใจใ„ใ†ใฎใ‚’่ฆ‹่ฝใจใ—ใฆ็„ฆใฃใŸใ€‚

ABC 371-B

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

ใƒ•ใƒฉใ‚ฐ $F[i]$ ใฏๅฎถ $i$ ใซ้•ท็”ทใŒใ„ใ‚‹ใ‹ใฉใ†ใ‹็คบใ™ใ€‚้•ท็”ทใŒใ„ใชใ„ๅฎถใซ้•ท็”ทใŒ็”Ÿใพใ‚Œใ‚Œใฐ Yes ใ‹ใคใƒ•ใƒฉใ‚ฐใ‚’็ซ‹ใฆใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐ No ใงใ‚ใ‚‹ใ€‚

ABC 371-C

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

้ ‚็‚นใฎ่ชญใฟๆ›ฟใˆใฏ $N! = 40320$ ้€šใ‚Šใชใฎใงใ€ใใ‚Œใ‚‰ใ‚’ๅ…จ้ƒจ็ถฒ็พ…ใ™ใ‚‹ใ€‚ $G$ ใฎ้ ‚็‚นใ‚’่ชญใฟๆ›ฟใˆใฆ $H$ ใจใฎ่พบใฎ้Žไธ่ถณใŒใ‚ใ‚Œใฐใ‚ณใ‚นใƒˆใ‚’่จˆไธŠใ™ใ‚‹ใ€‚ใ“ใฎใ‚ณใ‚นใƒˆใฎๆœ€ๅฐๅ€คใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

$H$ ใฎ้ ‚็‚นใ‚’่ชญใฟๆ›ฟใˆใŸใ‚‰ใชใœใ‹้€šใ‚‰ใชใ‹ใฃใŸใ€‚ $G, H$ ใฏๅฏพ็งฐใชใฎใ ใŒใ€่พบใฎใ‚ณใ‚นใƒˆใฏ้ ‚็‚นใ‚’่ชญใฟๆ›ฟใˆใ‚‹ๅ‰ใฎ้ ‚็‚น็•ชๅทใงๆฑ‚ใ‚ใชใ‘ใ‚Œใฐ ใชใ‚‰ใชใ‹ใฃใŸ ใ€‚ใ“ใ‚ŒใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚ใ“ใ†ใ™ใ‚‹ใใ‚‰ใ„ใชใ‚‰ใ€ $G$ ใฎ้ ‚็‚นใ‚’่ชญใฟๆ›ฟใˆใฆ $H$ ใจๆฏ”่ผƒใ™ใ‚‹ๆ–นใŒใ‚ณใƒผใƒ‰ใŒ็ฐกๆฝ”ใซใชใ‚‹ใ€‚

ABC 371-D

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

$X$ ใŒๆ˜‡้ †ใชใฎใงๅ‰ๅ‡ฆ็†ใ‚’็œใ‘ใ‚‹ใ€‚

็ดฏ็ฉๅ’Œ $C(i) = \sum_{j=1}^N P_j$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ไพฟๅฎœไธŠ $C_0 = 0$ ใจใ™ใ‚‹ใ€‚ใ“ใ‚Œใพใงไฝ•ๅบฆใ‚‚่ฆ‹ใŸใ‚ˆใ†ใซ $L$ ใฏ std::lower_bound , $R$ ใฏ std::upper_bound ใงไฝ็ฝฎใŒๅˆ†ใ‹ใ‚‹ใฎใงใ€ไฝ็ฝฎใ‹ใ‚‰ $[0,R]$ , $[0,L)$ ใใ‚Œใžใ‚Œใฎ็ดฏ็ฉๅ’Œใ‚’ๆฑ‚ใ‚ใ€ไธก่€…ใฎๅทฎใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅบงๆจ™ๅœง็ธฎใ™ใ‚‹ใ‚ณใƒผใƒ‰ใ‚’ไฝฟใฃใฆใ„ใชใ‹ใฃใŸใŒใ€ไฝฟใ†ใชใ‚‰ ใ“ใ† ๆ›ธใใ€‚

ABC 371-E

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

ใ‚ปใ‚ฐใƒกใƒณใƒˆๆœจใ‚’ๅ–ใ‚Šๅ‡บใ—ใŸใŒใพใ‚‹ใฃใใ‚Š้•ใฃใŸใ€‚

ๅพŒใ‚ใ‹ใ‚‰่€ƒใˆใ‚‹ใ€‚ $g(i) = \sum_{j=i}^{N} f(i,j)$ ใจใ™ใ‚‹ใ€‚ไพฟๅฎœไธŠ $g(N+1) = 0$ ใจใ™ใ‚‹ใ€‚ ใ‚ใ‚‹ $i$ ใซใคใ„ใฆ $a = A_i$ ใจใ—ใฆใ€ $a$ ใฎๅฏ„ไธŽใ‚’่€ƒใˆใ‚‹ใ€‚ $B_i$ ใ‚’ใ€ $A_j = a, j &gt; i$ ใ‚’ๆบ€ใŸใ™ๆœ€ใ‚‚ๅฐใ•ใชๅ€ค $j$ ใŒใ‚ใ‚Œใฐใใฎๅ€คใ€ใชใ‘ใ‚Œใฐ $B_i = N + 1$ ใจใ™ใ‚‹ใ€‚ใ“ใ‚Œใฏ $f(i,i..(B_i-1))$ ใซใคใ„ใฆใฏ $a$ ใŒ $g(i+1)$ ใ‹ใ‚‰็จฎ้กžๆ•ฐใ‚’1ๅข—ใ‚„ใ—ใ€ $f(i,B_i..N)$ ใซใคใ„ใฆใฏ $g(i+1)$ ใ‹ใ‚‰็จฎ้กžๆ•ฐใ‚’ๅข—ใ‚„ใ•ใชใ„ใ“ใจใ‚’ๆ„ๅ‘ณใ™ใ‚‹ใ€‚

ใ“ใฎใ“ใจใ‹ใ‚‰ $g(i) = g(i+1) + B_i - i$ ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ $i=N..1$ ใซใคใ„ใฆ็นฐใ‚Š่ฟ”ใ™ใจ็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚ $A$ ใฎๅ†…ใ€ๅ€คใŒ $a$ ใซใชใ‚‹ไฝ็ฝฎ $i$ ใฏๅ‰ๅ‡ฆ็†ใงๆฑ‚ใ‚ใฆใŠใใ€ใใ“ใ‹ใ‚‰ $B_i$ ใ‚’ไบŒๅˆ†ๆŽข็ดขใงๆฑ‚ใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏ ไฝ™ไบ‹่ฑก ใงใ‚ใ‚‹ใ€‚ไธŠ่จ˜ใ‚‚ไฝ™ไบ‹่ฑกใงใ‚ใ‚‹ใŒDPใ‚‰ใ—ใ„ใ€‚

ABC 371-G

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

ๆŒ‘ใ‚“ใ ใŒ่งฃใ‘ใชใ‹ใฃใŸใ€‚

$P$ ใฎ่ฆ็ด ใซไธ€ๆ„ๆ€งใŒใ‚ใ‚‹ใ“ใจใ‹ใ‚‰ใ€ $A_i$ ใ‚’ $A_{P_i}$ ใซ็ฝฎใๆ›ใˆใ‚‹ๆ“ไฝœใฏ $\vec{i,P_i}$ ใธใฎๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใงใ‚ใ‚‹ใ€‚ใ‚ˆใฃใฆใ‚ตใ‚คใ‚ฏใƒซใŒใ‚ใ‚‹ใ€‚ใ“ใฎๆœ‰ๅ‘ใ‚ฐใƒฉใƒ•ใ‚’ใ‚ตใ‚คใ‚ฏใƒซ $C$ ใซๅˆ†่งฃใ—ใ€ใใ‚Œใžใ‚Œใฎใ‚ตใ‚คใ‚ฏใƒซใฎไธญใงใ‚ตใ‚คใ‚ฏใƒซใฎๆˆๅˆ† $A_{Ci}$ ใ‚’ๅ›ž่ปขใ—ใฆๅ…ˆ้ ญใซๅฏ„ใ›ใ‚‹ใจ็ญ”ใˆใซใชใ‚‹ใ€ใจๆ€ใฃใŸใฎใ ใŒWAใ ใฃใŸใ€‚่ค‡ๆ•ฐใฎใ‚ตใ‚คใ‚ฏใƒซใ‚’็Ÿ›็›พใชใๅฏ„ใ›ใ‚‹ๆ–นๆณ•ใŒๅˆ†ใ‹ใ‚‰ใชใ‹ใฃใŸใ€‚

ๅ…ฌๅผ่งฃ่ชฌ1ใใฎใพใพใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใจไธŠ่จ˜ใฎใƒชใƒณใ‚ฏ้€šใ‚Šใซใชใ‚‹ใ€‚

ABC 372-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ48ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,D,Eใฎ5ๅฎŒใงใ‚ใ‚‹ใ€‚REใซTLEใจใƒœใƒญใƒœใƒญใ ใฃใŸใ€‚Fๅ•้กŒใ‚’็ฟŒๆœ่งฃใ„ใŸใ€‚

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

$S$ ใฎ . ไปฅๅค–ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ABC 372-B

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

3้€ฒๆ•ฐใซใ—ใฆใ€ $j$ ๆก็›ฎใŒ $k$ ใชใ‚‰ $j$ ใ‚’ $k$ ๅ›žๅ‡บๅŠ›ใ™ใ‚‹ใ€‚

ABC 372-C

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

ๅค‰ๆ›ดใ—ใŸๆ–‡ๅญ—ใฎๅ‘จ่พบใ ใ‘ๆ›ดๆ–ฐใ™ใ‚Œใฐใ‚ˆใ„ใ€‚

ๅˆๆœŸๅ€คใจใ—ใฆใ€ $i = 1..(N-2)$ ๆ–‡ๅญ—็›ฎใ‹ใ‚‰3ๆ–‡ๅญ—ๅ–ใฃใฆ ABC ใ‹ใฉใ†ใ‹่ชฟในใ‚‹ใ€‚ใ“ใฎๅ’ŒใŒๅˆๆœŸ่งฃใงใ‚ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒชใง $X_i$ ๆ–‡ๅญ—็›ฎใ‚’ $C_i$ ๆ›ธใๆ›ใˆใŸใ‚‰ใ€ๅฝฑ้ŸฟใŒๅŠใถใฎใฏ $(X_i-2)..X_i$ ๆ–‡ๅญ—ใ‹ใ‚‰3ๆ–‡ๅญ—ใŒ ABC ใ‹ใฉใ†ใ‹ใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๅทฎๅˆ†ใ‚’ๅ–ใฃใฆๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใ“ใฎ3ๆ–‡ๅญ—ใŒ $S$ ใ‚’ใฏใฟๅ‡บใ—ใฆREใ—ใŸใฎใงใ€ๅฏพ็ญ–ใ—ใŸใ‚‰ACใ—ใŸใ€‚

ๅฎŸ่ฃ…ใ‚’ใใ‚Œใ„ใซใ™ใ‚‹ใจ ใ“ใฎใ‚ˆใ†ใซ ใชใ‚‹ใ€‚

ABC 372-D

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

LISใ‹ใ‚นใ‚ฟใƒƒใ‚ฏใ‹ๅ…จใๅˆ†ใ‹ใ‚‰ใšใ€ๅ…ˆใซEๅ•้กŒใ‚’่งฃใ„ใŸใ€‚

$j$ ใ‚’ๅ›บๅฎšใ—ใฆ่€ƒใˆใ‚‹ใ€‚ $i &lt; j$ ใ‹ใค $H_i &gt; H_j$ ใชใ‚‰ใ€ใใฎใ‚ˆใ†ใช $i$ ใ‚ˆใ‚Šๅฐใ•ใช $k$ ใฏ้กŒๆ„ใ‚’ๆบ€ใŸใ•ใชใ„( $H_k &lt; H_i &gt; H_j$ ใชใฎใง)ใ€‚ใ‚ˆใฃใฆใใฎใ‚ˆใ†ใช $i$ ใฎใ†ใก $j$ ๆœชๆบ€ใฎๆœ€ๅคงๅ€ค(ใชใ‘ใ‚Œใฐ1)ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใใ†ใ™ใ‚Œใฐ $k \in [i,j)$ ใฏ $j$ ใซใคใ„ใฆ้กŒๆ„ใ‚’ๆบ€ใŸใ™ๆ–นๆณ•ใŒ1้€šใ‚Šใšใคใ‚ใ‚‹ใ€‚ใ„ใ‚‚ใ™ๆณ•ใงใ€ $i$ ใง1ๅŠ ็ฎ—ใ€ $j$ ใง1ๆธ›็ฎ—ใ™ใ‚‹ใ‚ˆใ†ๆบ–ๅ‚™ใ™ใ‚‹ใ€‚

ๅพŒใฏใ„ใ‚‚ใ™ๆณ•ใ‚’ๅ†็”Ÿใ—ใฆใ€ $Answer[1..n]$ ใฎ็ดฏ็ฉๅ’Œใ‚’ๆฑ‚ใ‚ใ‚‹ใจ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฏ ใ‚นใ‚ฟใƒƒใ‚ฏ ใ‚’็”จใ„ใฆใ„ใ‚‹ใ€‚ $H_i$ ใฎ้šฃ $H_{i+1}$ ใŒๅฃใซใชใ‚‹ใฎใฏใฉใ“ใพใงใ‹ใ‚’ใ‚นใ‚ฟใƒƒใ‚ฏใงๆฑ‚ใ‚ใ‚‹ใ€ใจ่งฃ้‡ˆใ™ใ‚‹ใ€‚ๅฃใฎๅ‘ใ“ใ†ใฏLISใชใฎใงใ€ใ‚นใ‚ฟใƒƒใ‚ฏ้•ทใŒLISใฎ้•ทใ•ใคใพใ‚Š็ญ”ใˆใงใ‚ใ‚‹ใ€‚ใ‚นใ‚ฟใƒƒใ‚ฏ้•ทใซๅ…จใ่€ƒใˆใŒ่‡ณใ‚‰ใชใ‹ใฃใŸใ€‚

ABC 372-E

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

Dๅ•้กŒใ‚ˆใ‚Š็ฐกๅ˜ใ ใฃใŸใ€‚

้ ‚็‚นๅŒๅฃซใŒๅˆฐ้”ๅฏ่ƒฝใงใ‚ใ‚‹ใ“ใจใฏUnion-findๆœจใ‹ใ‚‰ใ€ๅˆฐ้”ๅฏ่ƒฝใช้ ‚็‚น็•ชๅทใฎ้›†ๅˆใฏ std::set ใง็ฎก็†ใ™ใ‚‹ใ€‚้ ‚็‚น็•ชๅทใฎ้›†ๅˆใฏUnion-findๆœจใฎไปฃ่กจๅ…ƒใซๆŒใŸใ›ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒช1ใซใคใ„ใฆใฏใ€ใ“ใ“ใงใƒžใƒผใ‚ธใƒ†ใ‚ฏใ€ใคใพใ‚Šๅคงใใช std::set ใ‚’ๅฐใ•ใช std::set ใ‚’ๅธๅŽใ—ใฆใ€ std::swap ใ™ใ‚‹ใฎใŒๅฎš็Ÿณใงใ‚ใ‚‹ใ€‚ใฎใ ใŒใ€ $k &lt; 10$ ใชใฎใงไธก้›†ๅˆใ‚’ๅคงใใชๆ–นใ‹ใ‚‰10่ฆ็ด ใšใค่จˆ20่ฆ็ด ้›†ใ‚ใฆใ€ใใ“ใ‹ใ‚‰ๅคงใใชๆ–นใ‹ใ‚‰10่ฆ็ด ใšใค้›†ใ‚ใ‚Œใฐใ‚ˆใ„ใ€‚ใ“ใ‚Œใ‚’ๅฟ˜ใ‚ŒใฆTLEใ—ใŸใ€‚

ใ‚ฏใ‚จใƒช2ใซpolicy based ordered setใ‚’ไฝฟใ†ใจใ‚ณใƒผใƒ‰ใŒ็Ÿญใใชใ‚‹ใ€‚ใŒใ€ $k &lt; 10$ ใชใฎใง std::set::rbegin() ใ‹ใ‚‰ใ‚คใƒ†ใƒฌใƒผใ‚ฟใ‚’ๅ›žใ—ใฆใ‚‚ ้–“ใซๅˆใ† ใ€‚

ABC 372-F

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

A..Eๅ•้กŒใŒใ‚ใพใ‚Šใซ้…ใใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซ่งฃใๆ™‚้–“ใŒ็„กใ‹ใฃใŸใฎใงใ€็ฟŒๆœ่งฃใ„ใŸใ€‚

ใƒ€ใƒ–ใƒชใƒณใ‚ฐใ ใจๆ€ใฃใŸใ‚‰้•ใฃใŸใฎใ ใŒใ€ใ“ใ‚Œใฏๅˆถ็ด„ใ‹ใ‚‰ๅˆ†ใ‹ใ‚‹ใ“ใจใงใ‚ใ‚‹ใ€‚็›ธๅค‰ใ‚ใ‚‰ใšใ€ๅˆถ็ด„ใ‹ใ‚‰ๅ‡บ้กŒๆ„ๅ›ณใ‚’่ชญใฟๅ–ใ‚Œใชใ„ใ€‚

ใ‚ฐใƒฉใƒ•ใŒๅ‘จๅ›žใ—ใฆใ„ใ‚‹ใ“ใจใซๆณจ็›ฎใ™ใ‚‹ใ€‚่ฟฝๅŠ ใฎ $M$ ่พบใŒใชใ‘ใ‚Œใฐใ€ $j$ ๅ›ž็งปๅ‹•ใ—ใŸใจใใซๅ„้ ‚็‚นใซ็งปๅ‹•ใ™ใ‚‹ๆ–นๆณ• $C_j[1..N]$ ใŒใ‚ใฃใŸใจใ—ใฆใ€ $j+1$ ๅ›ž็งปๅ‹•ใ—ใŸใจใใซๅ„้ ‚็‚นใซ็งปๅ‹•ใ™ใ‚‹ๆ–นๆณ•ใฏไธ€ๅ€‹ใšใ‚‰ใ— $C_{j+1}[2..N,1]$ ใงใ‚ใ‚‹ใ€‚ $C$ ใ‚’ใ‚ณใƒ”ใƒผใ—ใชใ„ใ‚ˆใ†ใซๆทปใˆๅญ—ใ‚’้€†ใซ่ชญใ‚“ใงใ€ $j$ ๅ›ž็งปๅ‹•ใ—ใŸใจใใซๅ„้ ‚็‚นใซ็งปๅ‹•ใ™ใ‚‹ๆ–นๆณ•ใฏ $C[(1-j)..(N-j)]$ ใจใ™ใ‚‹ใ€‚ใŸใ ใ—ๆทปใˆๅญ—ใฏๅ‘จๅ›žใ‚’่€ƒๆ…ฎใ—ใŸ $modN$ ใงใ‚ใ‚‹ใ€‚

ใ“ใ“ใพใงๅˆ†ใ‹ใ‚Œใฐใ€่ฟฝๅŠ ใฎ $M$ ่พบใ‚’่€ƒๆ…ฎใ™ใ‚‹ใ€‚ $j = 1..K$ ๅ›ž็›ฎใซ็งปๅ‹•ใ™ใ‚‹ใจใใ€ $X_i$ ใ‹ใ‚‰ $Y_i$ ใซ่กŒใใฎใ‚’ใ€ $X_i - (j - 1)$ ใ‹ใ‚‰ $Y_i - 1 - (j - 1)$ ใซ่กŒใใจ่ชญใฟๆ›ฟใˆใ‚‹ใ€‚ใŸใ ใ—ๆทปใˆๅญ—ใฏๅ‘จๅ›žใ‚’่€ƒๆ…ฎใ™ใ‚‹ใ€‚

ใ“ใฎใจใ $j = 1..K$ ๅ›ž็›ฎใฎ็งปๅ‹•ๅพŒใซ้ ‚็‚น $1..N$ ใซ่กŒใๆ–นๆณ•ใ‚’ $DP[j][1..N]$ ใจใ—ใฆใ€็งปๅ‹•ๅ…ˆใซ้…ใ‚‹DPใ™ใ‚‹ใ€‚ $DP[0][1] = 1$ ใ€ไป–ใฏ0ใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚ๅ‘จๅ›žใ‚’ๅ›žใ‚‹ใจใใฏ้ ‚็‚นใ‚’่ชญใฟๆ›ฟใˆใ‚‹ใ ใ‘ใชใฎใง้…ใ‚‹ๅฟ…่ฆใฏใชใ(ใชใฎใงTLEใ—ใชใ„)ใ€่ฟฝๅŠ ใฎ $M$ ่พบใซใคใ„ใฆ $DP[j][from]$ ใ‚’ $DP[j+1][to]$ ใซ่ถณใ™ใ€‚ $from, to$ ใฏใ€ $X_i, Y_i$ ใ‚’ๅ‰่จ˜ใฎ้€šใ‚Š่ชญใฟๆ›ฟใˆใ‚‹ใ€‚

ๆœ€ๅพŒใซ $DP[K][1..N]$ ใฎๅ’ŒใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 373-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ49ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Dๅ•้กŒใฏๆ•ดๅ‚™ใ—ใฆใŠใ„ใŸใƒฉใ‚คใƒ–ใƒฉใƒชใซๆ•‘ใ‚ใ‚ŒใŸใ€‚Eๅ•้กŒใฏ2ๆ™‚้–“็ตŒใฃใฆใ‚‚่งฃใ‘ใชใ‹ใฃใŸใ€‚

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

ๆ–‡ๅญ—ๅˆ—ใŒ12ๅ€‹ๅ›บๅฎšใงใ‚ใ‚‹ใ“ใจใซๆณจๆ„ใ™ใ‚‹ใ€‚

ABC 373-B

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

A..Z = 1..26 ใŒ $S$ ใฎไฝ•็•ช็›ฎใซๅ‡บใ‚‹ใ‹ใฎ้€†้ †ๅˆ— $P[26]$ ไฝœใ‚‹ใ€‚ใ“ใฎ้€†้ †ๅˆ—ใ‚’่ตฐๆŸปใ—ใฆใ€ $\sum_{i=1}^{25} |P[i+1] - P[i]|$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 373-C

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

$max(A) + max(B)$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ABC 373-D

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

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

้€ฃ็ตๆˆๅˆ†ใซใคใ„ใฆใ‚ใ‚‹้ ‚็‚นใฎๅ€คใ‚’0ใซๆฑบใ‚ๆ‰“ใกใ—ใฆใ€ใ‚ฐใƒฉใƒ•ใ‚’DFSใ™ใ‚Œใฐๆฎ‹ใ‚Šใฏๆฑ‚ใพใ‚‹ใจๅˆ†ใ‹ใฃใŸใ€‚ใ—ใ‹ใ—ใ‚ฐใƒฉใƒ•ใฎๅ‘ใใซๅ›šใ‚ใ‚Œใฆใฉใ†ใ™ใ‚Œใฐใ‚ˆใ„ใ‹ๅˆ†ใ‹ใ‚‰ใชใใชใฃใŸใ€‚ไป•ๆ–นใŒ็„กใ„ใฎใงPotential DSUใฎใ‚นใƒ‹ใƒšใƒƒใƒˆใ‚’ๅ–ใ‚Šๅ‡บใ—ใฆACใ—ใŸใ€‚้‡ใฟใฎๅทฎใฎๅ‘ใใ‚’้€†ใซ่งฃ้‡ˆใ—ใฆใ—ใพใ„ๅฑใ†ใWAใ™ใ‚‹ใจใ“ใ‚ใ ใฃใŸใŒใ€ๆๅ‡บๅ‰ใซๆฐ—ใŒไป˜ใ„ใฆACใ—ใŸใ€‚Potential DSUใ‚’ไฝฟใ†ใชใ‚‰ไฝฟใ†ใงใ‚‚ใฃใจๆ—ฉใๆๅ‡บใ™ใ‚Œใฐใƒ‘ใƒ•ใ‚ฉใŒไธŠใŒใฃใŸใŒใ€ใƒšใƒŠใƒซใƒ†ใ‚ฃใ‚’้ฟใ‘ใ‚‹ใซใฏใ“ใ‚Œใใ‚‰ใ„ใฎๆ…Ž้‡ใ•ใŒๅฟ…่ฆใงใ‚ใ‚‹ใ€‚

Eๅ•้กŒไปฅ้™ใŒ่งฃใ‘ใชใ‹ใฃใŸใฎใงใ€็ตๅฑ€ใ“ใ‚ŒใŒๆœ€ๅพŒใฎ1ๅ•ใซใชใฃใŸใ€‚ใ‚ฐใƒฉใƒ•ใซใฏๅ‘ใใŒ้‡ใฟใŒใ‚ใ‚‹ใŒ้‡ใ•ใฎ้–ขไฟ‚ใฏ้€†ๅ‘ใใซใงใใ‚‹ใ“ใจใซๅ…จใๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใ€‚Potential DSUใฎใ‚นใƒ‹ใƒšใƒƒใƒˆใŒๆ‰‹ๅ…ƒใซใ‚ใ‚‹ใจใ„ใ†้‹ใ ใ‘ใงใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐใŒไธ‹ใŒใ‚‰ใšใซๆธˆใ‚“ใ ใ€‚ใจใฏใ„ใˆใ€ๆบ–ๅ‚™ใŒใงใใฆใ„ใŸใ‹ใ‚‰้‹ใŒๅ‘ใ„ใŸใจใ‚‚ใ„ใˆใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌ้€šใ‚Šใ€้€†ๅ‘ใใฎๆžใ‚’ๅผตใ‚‹ใจBFSใง ๆฑ‚ใพใ‚‹ ใ€‚

ABC 373-E

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

ไบŒๅˆ†ๆŽข็ดขใจ็ดฏ็ฉๅ’Œใ‚’ใ„ใ˜ใใ‚Šๅ›žใ—ใŸใŒใ€็ตๅฑ€่‡ชๅŠ›ใงใฏ่งฃใ‘ใชใ‹ใฃใŸใ€‚ไธŠ่จ˜ใฎใ‚ณใƒผใƒ‰ใฏใ€่งฃ่ชฌใ‚’ std::ranges::partition_point ใงๆ›ธใ็›ดใ—ใŸใ ใ‘ใงใ‚ใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใฎใ‚ณใƒผใƒ‰ใ‚’่ชญใฟ่งฃใใชใŒใ‚‰ใ€่‡ชๅˆ†ใฎ่จ€่‘‰ใง ่จ€ใ„ๆ›ใˆใ‚‹ ใ€‚ $N = M$ ใชใ‚‰ๅ…จๅ“กๅฝ“้ธใชใฎใง็ญ”ใˆใฏ0sใงใ‚ใ‚‹ใ€‚

ๅ‰ๅ‡ฆ็†ใจใ—ใฆ $A$ ใ‚’ๆ˜‡้ †ใซใ‚ฝใƒผใƒˆใ—ใ€ใ‚ฝใƒผใƒˆๆธˆใฎๆทปใˆๅญ—ใŒๅ…ƒใฎ $A$ ใฎใฉใฎๆทปใˆๅญ—ใซ็›ธๅฝ“ใ™ใ‚‹ใ‹ๅฏพๅฟœ่กจใ‚’ไฝœใ‚‹ใ€‚ๆฌกใซใ‚ฝใƒผใƒˆๅพŒใฎ $A$ ใฎ็ดฏ็ฉๅ’Œใ‚’ๅ–ใ‚‹ใ€‚ๆฎ‹ใ‚Šใฎ่กจใ‚’ $R$ ใจใ™ใ‚‹ใ€‚

ใใ‚Œใžใ‚Œใฎๅ€™่ฃœ่€… $i$ ใซใคใ„ใฆใ€ไบŒๅˆ†ๆŽข็ดขใง้–พๅ€คใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใฎ้–พๅ€คใฏใ€ๅ€™่ฃœ่€…ใŒ $i$ ใŒ็พๅœจ $A_i$ ๅพ—็ฅจใ—ใฆใ„ใฆใ€่ฟฝๅŠ ใง $x$ ็ฅจๅ–ใ‚‹ใจๅฝ“้ธ็ขบๅฎŸใซใชใ‚‹ใชใ‚‰ใ€ใใฎๆœ€ๅฐๅ€ค $x$ ใงใ‚ใ‚‹ใ€‚ไธ€็ฅจใ‚‚่ฟฝๅŠ ใ—ใชใใฆใ‚‚ๆ—ขใซๅฝ“้ธใ™ใ‚‹ใชใ‚‰0ใ€ๆฎ‹ใ‚Š $x &gt; R$ ็ฅจใ‚’ๅ…จ้ƒจ้›†ใ‚ใฆใ‚‚ๅฝ“้ธใ—ใชใ„ใชใ‚‰-1ใ€ใใ‚Œไปฅๅค–ใชใ‚‰ๆญฃใฎๆ•ดๆ•ฐ $x$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ใ“ใฎใ‚ˆใ†ใช $x$ ใ‚’ไบŒๅˆ†ๆŽข็ดขใงๆฑ‚ใ‚ใ‚‹ใ€‚ไบŒๅˆ†ๆŽข็ดขใฎๅ€™่ฃœ $y \in [0,r+2)$ ใซใคใ„ใฆใ€ใƒœใƒผใƒ€ใƒผใ‚’ $b = A_i + y$ ใจๆฑบใ‚ๆ‰“ใกใ™ใ‚‹ใ€‚ $b$ ใŒๆ„ๅ‘ณใ™ใ‚‹ใฎใฏใ€ $b$ ็ฅจใ‚’่ถ…ใˆใ‚‹ๅ€™่ฃœ่€…ใ‚’ $M-1$ ไบบ้›†ใ‚ใ€ๅ€™่ฃœ่€… $i$ ใŒ $b$ ็ฅจๅพ—ใ‚‹ใŸใ‚ใซๅ„ๅ€™่ฃœ่€…ใŒ่ฟฝๅŠ ใง็ฒๅพ—ใ™ใ‚‹็ฅจๆ•ฐใฎๅˆ่จˆ $s$ ใŒใ€ $R$ ็ฅจไปฅไธ‹ใงๆธˆใ‚€ใจใ„ใ†ใ“ใจใงใ‚ใ‚‹ใ€‚ $s$ ใ‚’ไปฅไธ‹ใฎ้€šใ‚Šๆฑ‚ใ‚ใ‚‹ใ€‚

  • ็พๅœจๅพ—็ฅจใŒ $b$ ไปฅไธ‹ใฎๅ€™่ฃœ่€…ใฎๆ•ฐใ‚’ $right$ ใจใ™ใ‚‹ใ€‚ใ“ใ‚Œใฏ $A$ ใ‚’ไบŒๅˆ†ๆŽข็ดขใ™ใ‚‹ใจๅˆ†ใ‹ใ‚‹ใ€‚
  • ็ฅจใ‚’่ฟฝๅŠ ใ—ใŸใ„ๅ€™่ฃœ่€…ใฎๆ•ฐใ‚’ $N$ ใ‹ใ‚‰ๅผ•ใ„ใŸๆ•ฐใ‚’ $left$ ใจใ™ใ‚‹ใ€‚ใ“ใ‚Œใฏ็ดฏ็ฉๅ’Œใ‚’้™คใ็ฏ„ๅ›ฒใฎๅณ็ซฏใงใ‚ใ‚‹(1ใšใ‚‰ใ™ใ“ใจใซๆณจๆ„)ใ€‚
    • ๅ€™่ฃœ่€… $i$ ใŒๅœๅค–ใคใพใ‚ŠไธŠไฝ $M$ ไฝใซๅ…ฅใฃใฆใ„ใชใ‘ใ‚Œใฐ $N - M$ ใจใ™ใ‚‹ใ€‚ๅœๅ†…ใฎไบบ $M-1$ ไบบใ‚’ $b+1$ ไปฅไธŠใซใชใ‚‹ใ‚ˆใ†ใซใ‹ใ•ไธŠใ’ใ—ใฆใ€ๅ€™่ฃœ่€… $i$ ใฏ $b$ ็ฅจใง $M$ ไฝใซใชใ‚‹ใ€‚
    • ๅ€™่ฃœ่€… $i$ ใŒๅœๅ†…ใคใพใ‚ŠไธŠไฝ $M$ ไฝใซๅ…ฅใฃใฆใ„ใ‚Œใฐ $N - M - 1$ ใจใ™ใ‚‹ใ€‚ๅ€™่ฃœ่€… $i$ ใ‚’้™คใๅœๅ†…ใฎไบบ $M-2$ ไบบใจ $M+1$ ไฝใฎไบบใ‚’ $b+1$ ไปฅไธŠใซใชใ‚‹ใ‚ˆใ†ใซใ‹ใ•ไธŠใ’ใ—ใฆใ€ๅ€™่ฃœ่€… $i$ ใฏ $b$ ใง $M$ ไฝใซใชใ‚‹ใ€‚
  • $left &lt; right$ ใชใ‚‰ใ€ๅ€™่ฃœ่€… $i$ ไปฅๅค–ใง $left$ ไปฅ้™ใฎๅ€™่ฃœ่€…ใŒ $b$ ็ฅจใ‚’ใŽใ‚ŠใŽใ‚Š่ถ…ใˆใ‚‹( $b+1$ ็ฅจๅพ—ใ‚‹)ใŸใ‚ใฎ็ฅจๆ•ฐ $s$ ใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใ‚Œใฏ $s = (right - left)(b + 1) - (cumsum[right] - cumsum[left])$ ใงใ‚ใ‚‹ใ€‚
  • $left \leq i &lt; right$ ใชใ‚‰ใ€ๅ€™่ฃœ่€… $i$ ใ‚‚ไธŠ่จ˜ใง $b+1$ ็ฅจใซใชใฃใฆใ—ใพใฃใŸใฎใงใ€ $s$ ใ‹ใ‚‰1ๅผ•ใ„ใฆ $b$ ็ฅจใซใ™ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐใ€ๅ€™่ฃœ่€… $i$ ใŒ $y$ ็ฅจ็ฒๅพ—ใ—ใฆ $M$ ไฝใซใชใ‚‹ใฎใงใ€ $s$ ใซ $y$ ใ‚’ๅŠ ใˆใ‚‹ใ€‚

$s &gt; r$ ใ‚’ๆบ€ใŸใ™ๆœ€ๅฐใฎ $y$ ใŒไบŒๅˆ†ๆŽข็ดขใงๆฑ‚ใพใ‚‹ใฎใงใใ‚ŒใŒ $x$ ใงใ‚ใ‚‹ใ€‚

ABC 374-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ50ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,C,Dใฎ4ๅฎŒใงใ‚ใ‚‹ใ€‚Eๅ•้กŒใฏ78ๅˆ†ๆŽ›ใ‘ใฆ่งฃใใ“ใจใŒใงใใšใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซACใ—ใŸใŒๆ™‚ใ™ใงใซ้…ใ—ใงใ‚ใ‚‹ใ€‚

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

std::string::rfind ใง่งฃใ‘ใ‚‹ใ€‚ๅ…ฅๅŠ›ใŒ4ๆ–‡ๅญ—ไปฅไธŠใชใฎใงใ€ std::string::substr ใงใ‚ˆใ‹ใฃใŸ ใ€‚

ABC 374-B

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

$S=T$ ใชใ‚‰็ญ”ใˆใฏ 0 ใงใ‚ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐ $L=min(|S|,|T|)$ ใจใ—ใฆใ€ $i=1..L$ ๆ–‡ๅญ—็›ฎใพใงใซไธไธ€่‡ดใชๆœ€ๅˆใฎๆ–‡ๅญ—ใŒใ‚ใ‚Œใฐ $i$ ๆ–‡ๅญ—็›ฎใŒ็ญ”ใˆใ€ใใ†ใงใชใ‘ใ‚Œใฐ $L+1$ ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ $S \ne T$ ใชใ‚‰ใ€ๆ–‡ๅญ—ๅˆ—ใฎๆœซๅฐพใซNULๆ–‡ๅญ—ใŒใ‚ใ‚‹ใจ่€ƒใˆใฆใ‚ˆใ„ใ€‚

ABC 374-C

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

$2^N$ ้€šใ‚Šใฎใ‚ฐใƒซใƒผใƒ—ๅˆ†ใ‘ใ‚’ใ™ในใฆๆŽข็ดขใ™ใ‚‹ใ€‚ๅ˜ไธ€ใ‚ฐใƒซใƒผใƒ—ใ—ใ‹ใงใใชใ„(0sใจ1s)ใจใใฏ่ชฟในใฆใ‚‚่ชฟในใชใใฆใ‚‚ใ‚ˆใ„ใ€‚

ABC 374-D

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

้ †ๅˆ—็ทๅˆ—ๆŒ™ใ€ๅ†ใณใƒ“ใƒƒใƒˆๅ…จๆŽข็ดขใงใ‚ใ‚‹ใ€‚

ใฉใฎ็ทšๅˆ†ใ‚’ใฉใฎ้ †็•ชใงๆใใ‹ใ‚’ใ€ $1..N$ ใฎ้ †ๅˆ—ใ‚’็ทๅˆ—ๆŒ™ใ™ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎ็ทšๅˆ†ใ‚’ใฉใกใ‚‰ใ‹ใ‚‰ๆใใ‹ใ‚’ใ€ $2^N$ ้€šใ‚Šๅˆ—ๆŒ™ใ™ใ‚‹ใ€‚ใ“ใ‚Œใ‚‰ใฎ็ต„ใฟๅˆใ‚ใ›ใ‚’ๅ…จ้ƒจ่ชฟในใ‚‹ใ€‚้ †ๅˆ—ใฎ็ทๅˆ—ๆŒ™ใ‚’ๅฟ˜ใ‚Œใฆๆ™‚้–“ใ‚’ๆŽ›ใ‘ใฆใ—ใพใฃใŸใ€‚

ABC 374-E

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

78ๅˆ†ใ‚ใ‚‹ใฎใซๆญฃ่งฃใงใใšใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆๅพŒใซๆญฃ่งฃใ—ใŸใ€‚

่ฃฝ้€ ่ƒฝๅŠ› $W$ ใ‚’ๆฑบใ‚ๆ‰“ใกใ—ใฆใ€่ฃฝ้€ ่ƒฝๅŠ› $W$ ใ‚’้”ๆˆใ™ใ‚‹ๆœ€ๅฐใ‚ณใ‚นใƒˆใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ‚ณใ‚นใƒˆใŒ $X$ ไปฅๅ†…ใฎๆœ€ๅคงใฎ่ฃฝ้€ ่ƒฝๅŠ›ใŒ็ญ”ใˆใงใ‚ใ‚‹ใ€‚ใ“ใ‚ŒใฏไบŒๅˆ†ๆŽข็ดขใงๆฑ‚ใพใ‚‹ใ€‚

ๅ•้กŒใฏ่ฃฝ้€ ่ƒฝๅŠ› $W$ ใ‚’้”ๆˆใ™ใ‚‹ๆœ€ๅฐใ‚ณใ‚นใƒˆใฎๆฑ‚ใ‚ๆ–นใงใ‚ใ‚‹ใ€‚ใใ‚Œใžใ‚Œใฎ่ฃ…็ฝฎใฎใ‚ณใ‚นใƒˆใฏ็‹ฌ็ซ‹ใชใฎใงใ€ใใ‚Œใžใ‚Œใฎ่ฃ…็ฝฎใฎใ‚ณใ‚นใƒˆใ‚’ๆœ€ๅฐๅŒ–ใ—ใฆๅ˜ใซ่ถณใ›ใฐใ‚ˆใ„ใ€‚ใชใฎใง่ฃ…็ฝฎ $i$ ใฎๆทปใˆๅญ—ใ‚’็œ็•ฅใ™ใ‚‹ใ€‚

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซ WAใ—ใŸ ่งฃๆณ•ใ‚’่จ˜ใ™ใ€‚ $L=LCM(A,B)$ ใจใ—ใฆใ€่ฃฝ้€ ่ƒฝๅŠ› $L$ ใ‚’ใ‚ณใ‚นใƒˆ $C=min(PL/A, QL/B)$ ใงๅฎŸ็พใงใใ‚‹ใ€‚่ฃฝ้€ ่ƒฝๅŠ› $L$ ใ‚’ $U = \lfloor W/L \rfloor$ ๅ˜ไฝใ€ๆฎ‹ใ‚Šใฎ่ฃฝ้€ ่ƒฝๅŠ› $R = W mod L$ ใ‚’่ฃ…็ฝฎ $S$ ใ‚’ $a$ ๅฐใ€ๆฎ‹ใ‚Šใ‚’่ฃ…็ฝฎ $T$ ใงใพใ‹ใชใ†ใ€‚ใ“ใ‚Œใ‚’ $a = 0.. \lceil R/A \rceil$ ใซใคใ„ใฆๅ…จๆŽข็ดขใ™ใ‚‹ใ€‚ $a$ ใ‚’ๅ›บๅฎšใ—ใŸใ‚‰ใ€ใ‚ณใ‚นใƒˆใฏ $Pa + Q \lceil max(0,(R-Aa)/B) \rceil$ ใงใ‚ใ‚‹ใ€‚ใ“ใฎ่งฃๆณ•ใฏๅ…ฅๅŠ›ไพ‹ใŒ้€šใ‚‹ใŒ 14 WAsใŒ่ฟ”ใฃใฆใใ‚‹ใ€‚

ๅไพ‹ใฏใ€ $N=1, X=24, A=3, P=10, B=2, Q=7$ ใงใ‚ใ‚‹ใ€‚ใ“ใฎใจใใฎ $S$ ใ‚’1ๅฐใ€ $T$ ใ‚’2ๅฐ่ณผๅ…ฅใ—ใฆใ‚ณใ‚นใƒˆ24ใง่ฃฝ้€ ่ƒฝๅŠ›7ใ‚’ๅพ—ใ‚‹ใ“ใจใŒใงใใ‚‹ใ€‚ใ—ใ‹ใ—ไธŠ่จ˜ใฎ่งฃๆณ•ใงใฏใ€ $min(20, 21) + min(10, 7) = 27$ ใชใฎใงๆœ€ๅฐใ‚ณใ‚นใƒˆใ‚’้–“้•ใˆใฆใ„ใ‚‹ใ€‚ใ‚ˆใฃใฆๆญฃ่งฃใฏ7ใ ใŒ6ใ‚’่ฟ”ใ™ใ€‚

ใฉใ†ใ‚„ใ‚‰ใ‚ณใ‚นใƒˆ $LU$ ใง่ฃฝ้€ ่ƒฝๅŠ›ใ‚’ $CU$ ่ฒทใ†ใฎใŒๆœ€้ฉใจใฏ้™ใ‚‰ใชใ„ใ‚ˆใ†ใงใ‚ใ‚‹ใ€‚ $L$ ใฎใ“ใจใฏๅฟ˜ใ‚Œใฆใ€ $a = 0..10000 \geq AB$ ใซใคใ„ใฆๅ…จๆŽข็ดขใ™ใ‚‹ใจACใ™ใ‚‹ใ€‚10000ใฏC++ใงใ”ใ‚ŠๆŠผใ—ใซใ‚‚ใปใฉใŒใ‚ใ‚Šใ€ๅ…ฌๅผ่งฃ่ชฌ้€šใ‚Šใƒซใƒผใƒ—ๅ›žๆ•ฐใ‚’ๆ›ธใใจ ใ“ใ† ใชใ‚‹ใ€‚

ๅ…ฌๅผ่งฃ่ชฌใ‚’่จ€ใ„ๆ›ใˆใ‚‹ใจใ“ใ†ใชใ‚‹ใ€‚ๆฉŸๆขฐ $S$ ใ‚’ $a=[0..B)$ ๅฐ่ณผๅ…ฅใ—ใฆใ€ๆฎ‹ใ‚Šใ‚’ๆฉŸๆขฐ $T$ ใซใ™ใ‚‹ใ€‚ๆฉŸๆขฐ $T$ ใ‚’ $b = \lceil max(0,(W-Aa)/B) \rceil$ ๅฐ่ณผๅ…ฅใ™ใ‚‹ใ€‚ $b &lt; A$ ใชใ‚‰ใ“ใ‚ŒใŒ็ญ”ใˆใฎๅ€™่ฃœใงใ‚ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚ŒใฐๆฉŸๆขฐ $S$ ใ‚’ $B$ ๅฐใจใ€ๆฉŸๆขฐ $T$ ใ‚’ $A$ ๅฐไบคๆ›ใ—ใฆใฉใกใ‚‰ใฎใ‚ณใ‚นใƒˆใŒไฝŽใ„ใ‹ไธ‹่จ˜ใฎ้€šใ‚Š้ธใถใ€‚

  • $PB \geq QA$ ใชใ‚‰ไธŠ่จ˜ใฎๆ–นใŒใ‚ณใ‚นใƒˆใŒๅฎ‰ใ„ใฎใงใ“ใ‚ŒใŒ็ญ”ใˆใฎๅ€™่ฃœใงใ‚ใ‚‹ใ€‚
  • $PB &lt; QA$ ใชใ‚‰ๆฉŸๆขฐ $S$ ใ ใ‘่ฒทใฃใฆๆฉŸๆขฐ $T$ ใ‚’่ฒทใ‚ใชใ„ใ€‚ใ“ใ‚ŒใฏๆฉŸๆขฐ $T$ ใ‚’ $b=[0..A)$ ๅฐ่ณผๅ…ฅใ—ใฆใ€ๆฎ‹ใ‚Šใ‚’ๆฉŸๆขฐ $S$ ใซใ™ใ‚‹ๆŽข็ดขใฎไธ€้ƒจใงใ‚ใ‚‹( $b=0$ ใŒ่ฉฒๅฝ“ใ™ใ‚‹)ใ€‚

ๅŒๆง˜ใซๆฉŸๆขฐ $T$ ใ‚’ $b=[0..B)$ ๅฐ่ณผๅ…ฅใ—ใฆใ€ๆฎ‹ใ‚Šใ‚’ๆฉŸๆขฐ $S$ ใซใ™ใ‚‹ๅ ดๅˆใ‚’ๆŽข็ดขใ™ใ‚‹ใ€‚ใ“ใ‚Œใงใ™ในใฆใฎๅ ดๅˆใ‚’็ถฒ็พ…ใงใใ‚‹ใ€‚ใ“ใฎใ“ใจใซๆฐ—ใŒไป˜ใ‹ใชใ‹ใฃใŸใ€‚

ABC 375-381 (ใ‚ณใƒณใƒ†ใ‚นใƒˆ51-55ๅ›ž็›ฎ)

ABC 375-A

ใ‚ณใƒณใƒ†ใ‚นใƒˆ51ๅ›ž็›ฎใงใ‚ใ‚‹ใ€‚A,B,D 3ๅฎŒใฎๆƒจๆ•—ใงใ‚ใ‚‹ใ€‚Cๅ•้กŒใ‚’ๆจใฆใฆEๅ•้กŒใซ่ณญใ‘ใŸใฎใŒ่ฃ็›ฎใซๅ‡บใŸใ€‚

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

ๅ…ˆ้ ญใ‹ใ‚‰ $1..(N-2)$ ๆ–‡ๅญ—็›ฎใ‹ใ‚‰3ๆ–‡ๅญ—ใ‚’่ชฟในใ‚‹ใ€‚็ดฏ็ฉใ™ในใใจใ“ใ‚ใ‚’ไปฃๅ…ฅใซใ—ใŸใฎใง็ญ”ใˆใŒๅˆใ‚ใชใ„ใ€‚ใ“ใฎๆ™‚็‚นใงไปŠๆ—ฅใฏไฝ•ใ‹ใŠใ‹ใ—ใ„ใจๆ€ใ†ใ€‚

ABC 375-B

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

ๅ…ฅๅŠ›ใฎๆœ€ๅพŒใซๅŽŸ็‚นใ‚’ๅŠ ใˆใฆใ€็ทšๅˆ†้–“ใฎ่ท้›ขใ‚’่ถณใ—ใฆใ„ใใ€‚ $N+1$ ่ฆ็ด ใ‚’ $(0,0)$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใจใ€ๆœ€ๅพŒใซๅŽŸ็‚นใ‚’่ถณใ™ๅ‡ฆ็†ใ‚’็œ็•ฅใงใใ‚‹ใ€‚

ABC 375-C

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

ๅˆ่ฆ‹ใงๅ…จใ่งฃใ‘ใšใซD,Eๅ•้กŒใซ่กŒใฃใŸใ€‚ใ“ใ‚ŒใŒๅฎŒๅ…จใซ่ฃ็›ฎใซๅ‡บใŸใ€‚

ๅบงๆจ™่ปธใ‚’ๅ่ปขใ—ใฆๅทฆๅณใซๅ่ปขใ™ใ‚‹ๆ“ไฝœใฏใ€ๆ™‚่จˆๅ›žใ‚Šใซ90ๅบฆๅ›ž่ปขใ™ใ‚‹ใฎใจๅŒใ˜ใงใ‚ใ‚‹ใ€‚ใ“ใฎๅ›ž่ปขใฏๅค–ใ‹ใ‚‰ $i$ ๅ‘จ็›ฎใฎใƒžใ‚นใซใคใ„ใฆ $i Mod 4$ ๅ›ž่กŒใ†ใ€‚ๅพŒใฏใ“ใ‚Œใ‚’ $i=1..N/2$ ๅ›ž่กŒใ†ใ€‚ๅ›ž่ปขใฏ้ซ˜ใ€…4ๅ›žใชใฎใงใ€ๆ™‚่จˆๅ›žใ‚Šใซ90ๅบฆๅ›ž่ปขใ ใ‘ๅฎŸ่ฃ…ใ—ใฆ็นฐใ‚Š่ฟ”ใ›ใฐใ‚ˆใ„ใ€‚

Eๅ•้กŒใซ่ณญใ‘ใŸใ‚‰ๆ™‚้–“ๅˆ‡ใ‚Œใซใชใฃใฆใ—ใพใ„ใ€ใ‚ณใƒณใƒ†ใ‚นใƒˆใŒ็ต‚ใ‚ใฃใŸๅพŒใซไธŠ่จ˜ใซๆฐ—ใŒใคใ„ใŸใ€‚ๅฎŒๅ…จใซๅ•้กŒ้ธใณใ‚’้–“้•ใˆใŸใฎใ ใŒใ€Dๅ•้กŒใซๆ™‚้–“ใ‚’ๆŽ›ใ‘้ŽใŽใฆไฝ™่ฃ•ใŒใชใ‹ใฃใŸใ€‚

ABC 375-D

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

ๆ–‡ๅญ—ใฏ26็จฎใ—ใ‹ใชใ„ใฎใงใใ‚Œใžใ‚Œๅˆฅใซ่€ƒใˆใฆใ‚ˆใ„ใ€‚ไพ‹ใˆใฐ A ใŒๅ‡บ็พใ™ใ‚‹ไฝ็ฝฎใŒ $P = (P_1, P_2, ... ,P_k)$ ใจ $k$ ๅ€‹ใ‚ใ‚‹ใจใ™ใ‚‹ใ€‚ $k &lt; 2$ ใชใ‚‰ AxA ใจใ„ใ†ๅ›žๆ–‡ใฏไฝœใ‚Œใชใ„ใฎใง0้€šใ‚Šใงใ‚ใ‚‹ใ€‚ใใ†ใงใชใ‘ใ‚Œใฐ $(P_1,.,P_2), (P_1,.,P_3), (P_1,.,P_k), ... (P_k-1,.,P_k)$ ใจใ„ใ†ๅ›žๆ–‡ใ‚’ไฝœใ‚Œใ‚‹ใ€‚

็ดฏ็ฉๅ’Œใ‚’ไธŠๆ‰‹ใไฝฟใฃใฆ $i=1..(k-1)$ ใซใคใ„ใฆ็ต„ใฟๅˆใ‚ใ›ใ‚’ๆฑ‚ใ‚ใ‚‹่จˆ็ฎ—้‡ใ‚’ๅ‰Šๆธ›ใ™ใ‚‹ใ€‚ๆœ€ๅˆใซ $i=1$ ใซใคใ„ใฆ $S = \sum_{j=2}^{k} P_j - P_i - 1$ ้€šใ‚Šไฝœใ‚Œใ‚‹ใ“ใจใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ใ“ใ‚Œใ‚’ๅ†ๅˆฉ็”จใ™ใ‚‹ใ€‚ $i+1$ ใซใคใ„ใฆๅŒบ้–“ $[P_i,P_{i+1}]$ ใŒ $k-i$ ๅ€‹็„กใใชใ‚Šใ€ๅŒบ้–“ $[P_{i+1},P_{i+2}]$ ใŒ1ๅ€‹็„กใใชใ‚‹ใฎใง $S$ ใ‹ใ‚‰ๅผ•ใใ€‚ใ“ใฎใ‚ˆใ†ใช $S$ ใ‚’ $i=1..(k-1)$ ใซใคใ„ใฆๆฑ‚ใ‚ใ‚‹ใจ A ใซใคใ„ใฆ็ญ”ใˆใŒๆฑ‚ใพใ‚‹ใ€‚ๅพŒใฏๆ–‡ๅญ—26็จฎใซใคใ„ใฆๆ•ฐใˆใฆ่ถณใ™ใจ็ญ”ใˆใงใ‚ใ‚‹ใ€‚

ๅˆฅใฎ่ฆ‹ๆ–นใ‚’ใ™ใ‚‹ใจ ใ“ใ† ใชใ‚‹ใ€‚ๅŒบ้–“ $(P_i,P_{i+1}]$ ใซใคใ„ใฆไฝ•ๅ›ž่ถณใ™ใ‹ใ‚’่€ƒใˆใ‚‹ใ€‚

  • $P_i$ ใ‚ˆใ‚Šๅทฆใ‹ใ‚‰ใใฆ $P_{i+1}$ ใ‚ˆใ‚Šๅณใง็ต‚ใ‚ใ‚‹ๅ›žๆ–‡ใ€‚ๅทฆใซ $i-1$ ๅ€‹ใฎ $P$ ใ€ๅณใซ $k-i-1$ ๅ€‹ใฎ $P$ ใ€ๅŒบ้–“้•ทใŒ $W_i = P_{i+1} - P_i$ ใชใฎใงใ€็ต„ใฟๅˆใ‚ใ›ใฏ $(i-1)(k-i-1)W_i$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚
  • $P_i$ ใ‚ˆใ‚Šๅทฆใ‹ใ‚‰ใใฆ $P_{i+1}$ ใง็ต‚ใ‚ใ‚‹ๅ›žๆ–‡ใ€‚ๅทฆใซ $i-1$ ๅ€‹ใฎ $P$ ใ€ๅŒบ้–“้•ทใŒ $P_{i+1} - P_i - 1$ ใชใฎใงใ€็ต„ใฟๅˆใ‚ใ›ใฏ $(i-1)(W_i-1)$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚
  • $P_i$ ใงๅง‹ใพใฃใฆ $P_{i+1}$ ใŠใ‚ˆใณใใ‚Œใ‚ˆใ‚Šๅณใง็ต‚ใ‚ใ‚‹ๅ›žๆ–‡ใ€‚ๅณใซ $k-i$ ๅ€‹ใฎ $P$ ใ€ๅŒบ้–“้•ทใŒ $P_{i+1} - P_i$ ใ€ใŸใ ใ— $(P_i,P_{i+1}]$ ใซใคใ„ใฆ1ๅผ•ใใฎใงใ€็ต„ใฟๅˆใ‚ใ›ใฏ $(k-i)W_i-1$ ้€šใ‚Šใงใ‚ใ‚‹ใ€‚

ไธŠ่จ˜ใฎๅผใ‚’ๅฐŽๅ‡บใ™ใ‚‹ใฎใซๆ‰‹้–“ๅ–ใ‚Šใ€21:47:48ใซACใ—ใŸใ€‚็ดฏ็ฉๅ’Œใ‚’ไฝฟใ‚ใชใ„็ญ”ใˆใŒใ‚ณใƒกใƒณใƒˆใ‚ขใ‚ฆใƒˆใ•ใ‚Œใฆๆฎ‹ใฃใฆใ„ใ‚‹ใฎใŒ็”Ÿใ€…ใ—ใ„ใ€‚ใ“ใ‚Œใงๆฎ‹ใ‚Šๆ™‚้–“ใŒ็„กใใชใ‚Šใ€Eๅ•้กŒใง้€†่ปขใ™ใ‚‹ใ‹Cๅ•้กŒใ‚’้…่งฃใใ™ใ‚‹ใ‹ใฎไบŒๆŠžใซใชใ‚Šใ€ๅ‰่€…ใ‚’้ธใ‚“ใงๅ…ฑๅ€’ใ‚Œใซ็ต‚ใ‚ใฃใŸใ€‚

ไธŠ่จ˜ใฎใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใฏ $O(N)$ ใงใ‚ใ‚‹ใ€‚ๅ›žๆ–‡ใฎไธก็ซฏใงใฏใชใ็œŸใ‚“ไธญใซๆณจ็›ฎใ™ใ‚‹ใจใฏใ‚‹ใ‹ใซ็ฐกๅ˜ใซ ่งฃใ‘ใ‚‹ใ€‚ std::lower_bound(position) ใจ begin(), end() ใฎๅทฎใ‚’ๆฑ‚ใ‚ใ‚‹ใจ $O(Nlog(N))$ ใซใชใ‚‹ใŒใ‚ณใƒผใƒ‰ใฏ็ฐกๆฝ”ใซใชใ‚‹ใ€‚ใ“ใฎ่งฃๆณ•ใฏใ€252-Dใฎๅ…ฌๅผ่งฃ่ชฌ1ใใฎใ‚‚ใฎใงใ‚ใ‚‹ใ€‚

ABC 375-E

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

ใ‚ณใƒณใƒ†ใ‚นใƒˆไธญใซๆ–น้‡ใฏ็ซ‹ใฃใŸใŒใ€่จญ่จˆใŒไธŠๆ‰‹ใใ„ใ‹ใชใ‹ใฃใŸใฎใง็ฟŒๆœACใ—ใŸใ€‚

$sum B \leq 1500$ ใ‹ใ‚‰ใ€ใƒใƒผใƒ 2,3ใฎๅผทใ•ใ‚’ $0..1500$ ใจใ—ใฆDPใ™ใ‚Œใฐใ‚ˆใ„ใ€‚4็ง’ๅˆถ็ด„ใชใฎใงC++ใงใ”ใ‚ŠๆŠผใ›ใฐ่งฃใ‘ใ‚‹(3510 ms)ใ€‚

ใพใš้ธๆ‰‹ใฎๅผทใ•ใฎๅ’Œใ‚’ $W$ ใจใ™ใ‚‹ใ€‚ $W$ ใŒ3ใฎๅ€ๆ•ฐใงใชใ‘ใ‚Œใฐ่งฃใชใ—ใชใฎใง -1 ใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใ€‚ไปฅไธ‹ใ€ๅ…จใƒใƒผใƒ ใฎๅผทใ•ใ‚’ $W/3$ ใซใ™ใ‚‹ใ“ใจใ‚’็›ฎๆจ™ใซใ™ใ‚‹ใ€‚

$DP[S][T]$ ใ‚’ใ€ใƒใƒผใƒ 2ใฎๅผทใ•ใ‚’ $S$, ใƒใƒผใƒ 3ใฎๅผทใ•ใ‚’ $T$ ใจใ—ใŸใจใใฎใ€็ท็งป็ฑๅ›žๆ•ฐใฎๆœ€ๅฐๅ€คใจใ™ใ‚‹ใ€‚ใƒใƒผใƒ 1ใฎๅผทใ•ใฏใƒใƒผใƒ 2,3ใฎๅผทใ•ใ‹ใ‚‰ๆฑ‚ใพใ‚‹ใฎใง(ใ‚ผใƒญใ‚ตใƒ ใ ใ‹ใ‚‰ $W - S - T$ ใงใ‚ใ‚‹)ใ€ๆ˜Žใซ็Šถๆ…‹ใจใ—ใฆๆŒใคๅฟ…่ฆใฏใชใ„ใ€‚

ๅˆๆœŸ็Šถๆ…‹ใฎใƒใƒผใƒ 2ใฎๅผทใ•ใ‚’ $S0$, ใƒใƒผใƒ 3ใฎๅผทใ•ใ‚’ $T0$ ใจใ—ใฆใ€ $DP[][] = \infty$ , $DP[S0][T0] = 0$ ใงๅˆๆœŸๅŒ–ใ™ใ‚‹ใ€‚ใ‚ใจใฏๅ„้ธๆ‰‹ใ‚’็งป็ฑใ•ใ›ใฆDPใ‚’็Šถๆ…‹้ท็งปใ™ใ‚‹ใ€‚ๅˆๆœŸ็Šถๆ…‹ใงใใ‚Œใžใ‚Œใฎใƒใƒผใƒ ใฎ้ธๆ‰‹ใ‚’็งป็ฑใ—ใ€็งป็ฑใ™ใ‚‹้ธๆ‰‹ใฎๅผทใ•ใ‚’ $B$ ใจใ™ใ‚‹ใ€‚ใƒใƒผใƒ 1ใฎๅผทใ•ใฏๆ˜Ž่จ˜ใ—ใชใ„ใ“ใจใซๆณจๆ„ใ™ใ‚‹ใ€‚

  • ใƒใƒผใƒ 1ใ‹ใ‚‰ใƒใƒผใƒ 2ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S+B][T] = min(DP[S+B][T], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚
  • ใƒใƒผใƒ 1ใ‹ใ‚‰ใƒใƒผใƒ 2ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S][T+B] = min(DP[S][T+B], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚
  • ใƒใƒผใƒ 2ใ‹ใ‚‰ใƒใƒผใƒ 1ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S-B][T] = min(DP[S-B][T], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚
  • ใƒใƒผใƒ 2ใ‹ใ‚‰ใƒใƒผใƒ 3ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S-B][T+B] = min(DP[S-B][T+B], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚
  • ใƒใƒผใƒ 3ใ‹ใ‚‰ใƒใƒผใƒ 1ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S][T-B] = min(DP[S][T-B], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚
  • ใƒใƒผใƒ 3ใ‹ใ‚‰ใƒใƒผใƒ 2ใซ็งป็ฑใ™ใ‚‹ใ€‚ $DP[S+B][T-B] = min(DP[S+B][T-B], DP[S][T] + 1)$ ใงใ‚ใ‚‹ใ€‚

็ญ”ใˆใฏ $DP[W/3][W/3]$ ใงใ‚ใ‚‹(ใŸใ ใ— $\infty$ ใชใ‚‰่งฃใชใ—ใชใฎใง -1 )ใ€‚

็งป็ฑใ™ใ‚‹ใฎใงใฏใชใใ€ๅ„ใƒกใƒณใƒใ‚’ใƒใƒผใƒ ใซๅ‰ฒใ‚Šๅฝ“ใฆใ€ๅˆๆœŸๅ€คไปฅๅค–ใชใ‚‰็งป็ฑๅ›žๆ•ฐใ‚’ๆ•ฐใˆใ‚‹ใจใ„ใ†ๆ–น้‡ใซใ™ใ‚‹ใจใ€DPใฎๆทปใˆๅญ—ใŒ $W/3$ ใซใชใ‚‹ใฎใงใ€500 msใพใง ๆธ›ใ‚‹ ใ€‚ใ“ใ‚ŒใŒๅ…ฌๅผ่งฃ่ชฌใฎๆƒณๅฎš่งฃๆณ•ใงใ‚ใ‚‹ใ€‚ๅผทใ•ใŒๆš—้ป™ใฎใƒใƒผใƒ (ไธŠ่จ˜ใงใฏใƒใƒผใƒ 1)ใฎๅผทใ•ใ‚’้ท็งปใ™ใ‚‹ใฎใŒใ‚„ใ‚„ใ“ใ—ใ„ใ€‚

ABC 375-F

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

็ฟŒๆœ่งฃใ„ใŸใ€‚Eๅ•้กŒใจๅŒๆง˜ใ€ใชใ‚“ใจใชใ่งฃๆณ•ใŒ่ฆ‹ใˆใŸใ ใ‘ใงใฏๆญฃ่งฃใงใใชใ„ใ€‚

ใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใ‚’ๅˆ†ๅ‰ฒๅฎŸ่กŒใ™ใ‚‹ใจWAใจTLEใ‚’ๅ›ž้ฟใงใใ‚‹ใ€‚ๆœ€ๅˆใซใ‚ฏใ‚จใƒชๅ…ˆ่ชญใฟใ—ใฆใ€้€š่กŒๆญขใ‚ใฎ้“่ทฏใŒ็ขบๅฎšใ—ใŸ็Šถๆ…‹ใงใ€้ƒฝๅธ‚้–“ใฎ่ท้›ขใ‚’ใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใงๆฑ‚ใ‚ใ‚‹ใ€‚ๆฌกใซใ‚ฏใ‚จใƒชใ‚’้€†ๅ†็”Ÿใ™ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒช1ใฏ้“่ทฏใฎ้€š่กŒๆญขใ‚ใ‚’่งฃ้™คใ™ใ‚‹ใ€‚ $A,B$ ็ตŒ็”ฑใฎๆœ€็Ÿญ่ท้›ขใ‚’ใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใงๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใ“ใฎใจใไบŒ้ƒฝๅธ‚ $x,y$ ใซใคใ„ใฆใ€ $x,A,B,y$ ใจ $x,B,A,y$ ใฎๆœ€็Ÿญ่ท้›ขใ ใ‘ใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚ใใ‚Œไปฅๅค–ใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใจTLEใ™ใ‚‹ใ€‚

ใ‚ฏใ‚จใƒช2ใฏ้ƒฝๅธ‚้–“ $x,y$ ้–“ใฎๆœ€็Ÿญ่ท้›ขใ‚’ๆฑ‚ใ‚ใ‚‹ใ€‚ๆœ€ไฝŽ่ท้›ขใฎไธŠ้™ใฏๆ—ขใซๆฑ‚ใพใฃใŸ $x,y$ ใฎๆœ€็Ÿญ่ท้›ขใงใ‚ใ‚‹ใ€‚ใ“ใ‚Œใซใƒฏใƒผใ‚ทใƒฃใƒซใƒ•ใƒญใ‚คใƒ‰ๆณ•ใฎ็ถšใใ‚’ๅฎŸ่กŒใ™ใ‚‹ใ€‚ใคใพใ‚Š $x,z,y : z=1..N$ ใงๆœ€็Ÿญ่ท้›ขใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ€‚

โš ๏ธ **GitHub.com Fallback** โš ๏ธ