E - LRUD Moving 解説 by Solalyth

探索を用いた軽実装解

Yes No の判定は公式解説を参照してください。Yes の場合を考えます。

\(r = \min(A,~ N-1)\) とします。( \(r,~ r+1\) 行のどちらかにマス \((A, B)\) が存在するような \(r\) を取ればよいです。)

基本的には左右に進み続け、進めなくなったら下に 1 回進みます。 \(r,~ r+1\) 行目では、マス \((A, B)\) を避けつつ、この 2 行にまたがってくねくね進み、同様に進めなくなったら下に進みます。 この戦略を取ることで、条件に適したパスが得られることが証明できます。

よって、現在居るマスが \((N, N)\) となるまで

  • \(r\) 行目のとき … D -> LR
  • \(r+1\) 行目のとき … U -> LR -> D
  • それ以外のとき … LR -> D
    • このとき上に進めないため U -> LR -> D としてよい

の順に探索し、進めるなら進むことを繰り返せばよいです。

実装例 (Rust)

投稿日時:
最終更新: