Mujin Programming Challenge 2017 A - Robot Racing
問題
直線上を座標に並んだ体のロボットは、それぞれ次の操作が可能である。
- 今いる座標から、座標の空いている好きな方に移動する
座標が0以下でゴールになる。体のロボットの順位としてありえるパターンを求める。
考察
でがよりも先にゴールするとき、座標が空席、座標にが、座標にがいる状態になり、番目のロボットが座標に移動するような場面がある。ここで、が座標に移動すれば状況を入れ替えることができ、かつが位でゴールできるなら、は位かそれよりも良い順位でゴールできることを示せた。
次に、番目のロボットが1位でゴールできる時、は座標に並ぶことができ、またそのとき限り1位になれることを示す。
が座標に並べないときが1位にならないことを示す
が座標に並べないとき、座標なるが存在する。がを飛び越え1位になるためには、それ以前のロボットが全て1つ以上のマスを開けて並ぶ必要があり、これを実現しようとすると少なくともがゴールしてしまう。よって、が座標に並べないとき1位にならない。
が座標に並ぶときが1位になれることを示す
についての帰納法で示す
- の時は自明
- で成り立つとき、で成り立つことを示す
を座標に並べる(帰納法の仮定より可能)。の初期の座標が以上のときのみ、をに移動できる。このとき、をそれぞれ座標に移動できる。その後を1つ飛ばしで動かせばが1位になれる。
以上より、が座標に並ぶときが1位になれる。したがって、番目のロボットが1位でゴールできる時、は座標に並ぶことができ、またそのとき限り1位になれることが示された。
また、 の最高順位が位のとき、から体除いた体が座標に並ぶことができ、またそのときに限る。 このことから、の最高順位はの最高順位か、それだということもわかる。
以上から、それぞれのロボットの最高順位を求め、を求めればよい。