OI
July 17, 2023

CCO '22 P3 - Double Attendance

https://dmoj.ca/problem/cco22p3
Милая задача :)

Писал CCO 2022 Day1, набрал по ней 21 из 25 возможных, сейчас решил дорешать и она, оказывается, достаточно очевидна, если просто посмотреть с другой стороны!

Я писал dp-шку вида (dp[side][x] -> max # of segments), ее достаточно просто придумать, а чтобы бороться с тем, что мы можем учитывать один отрезок два раза, надо обновлять не dp[side ^ 1][x + k], а dp[side ^ 1][max(x + k, R[x] - k)].

Дальше, мне кажется, это практически невозможно и очень неприятно доделать до решения на 100, но раз на туре я смог набрать 21, думал, что достаточно рядом :)

Оказывается, надо просто посмотреть на задачу чуть с другой стороны и считать не dp[side][x] -> # of segments, а dp[side][# of segments] -> min x. Теперь применяем нашу идею выше и вуаля, получаем полный балл! :D

Эта задача напоминает нам о том, что полезно менять состояния dp / смотреть на задачи под другим углом.