イベント巡り (Event Hopping) - JOI 2020/2021 二次予選
JOI 2020/2021 二次予選 「イベント巡り (Event Hopping)」 に関する記事です. 公式解説 を読みきれなかったので…. 問題へのリンク https://atcoder.jp/contests/joi2021yo2/tasks/joi2021_yo2_c 解法 ちょっと不思議な感じで,小課題3 を (私の感覚では) 自然に解くと, それが満点解法にもなっているという… (解説を読むまでわからなかったのですけれど) ソートして,$S_i$ が昇順になっているとします. ナイーブに考えると,次の DP になります. dp[i][j] := i番目のイベントに参加する直前までに参加したイベントの 回数が j であるような方法がある (True/False) 遷移としては,dp[i][j] = True となる j について, 町 $P_i$ で行われるイベントで,時刻 $S_i + 1$ 以降最も早いものを i1 町 $3 - P_i$ で行われるイベントで, 時刻 $S_i + 1 + D + K(j + 1)$ 以降最も早いものを i2 として, dp[i1][j+1] := True dp[i2][j+1] := True と設定することになります.でも,これは $\Omega(N^2)$ なので,間に合いません....