段上ることができます。段目の床は壊れており、その段に足を踏み入れることは危険です。割った余りを求めてください。https://atcoder.jp/contests/abc129/tasks/abc129_c壊れた床がない場合はフィボナッチになりますね。段目までの行き方を次のように場合分けをすることで、漸化式を得ることができます。2}\)あとはこれを応用して考えてみます。壊れた床の前後で分割して考えれば、例えば次のように細かいフィボナッチ数の積で考えられますね。すれば、壊れた床が2つ続く場合も対応できますね。高速で計算できそうなアルゴリズムを見つけてパク真似させていただきました。行列使うとうまくいくよねっていう感じで、細かい話は下の記事を御覧ください。INF)とても長いですが、前半はフィボナッチの定義してるだけです。(動的計画法)動的計画法を使うのが想定解だそう。通りにすればOKですね。こんな感じになります。解き進めていこうと思った次第です。列のグリッドが与えられます。このグリッドのうち、いくつかのマスには障害物が存在します。すぬけ君は、障害物のないマスのうち一つを選び、そのマスに明かりを設置しようとしています。設置されたマスから、上下左右の四方向にまっすぐに光線が伸びます。それぞれの方向について、最初に障害物が存在するマスにぶつかる、もしくはグリッドの端にぶつかる手前のマスまで照らされます。明かりを設置したマスも照らされますが、障害物が存在するマスは照らされません。すぬけ君は明かりによって照らされるマスの個数を最大化したいです。ときは障害物がありません。照らされるマスの個数の最大値を求めてください。到達して、適当に書いているうちに終了みたいな感じでしたが考えてみます。なってしまうので、先にマスを数えておきます。すれば大丈夫そうですね。ある例で具体的に考えてみます。