ABC113 D - Number of Amidakuji
問題
提出コード
DPをします。
まずは、下準備をします。
ある高さについて、幅がのとき(つまり、本の棒があるとき)に、横線の置き方がいくつあるかを計算します。
これをとします。
のとき、横線はおけないのでです。
のとき、横線を置くか置かないかの2通りです。よってです。
のときについて考えます。
横線を置くと1、置かないと0とすると、
00,01,10の3通りです。
です。
これ以降については、実はフィボナッチ数列のようになっています。
幅がのとき、一番右側に横線を置くか置かないかで場合分けをします。
横線を置かないとき
一番右端を除く、の幅についての置き方を考えればよいので、これは
になります。横線を置くとき
一番右端に横線を置くと、その左側は自動的に横線を置くことができなくなります。
残ったの幅については自由に置くことができるので、これは
になります。
ということで、
となります。
の最大値が8なので、これは手計算で求めてもいいですし、プログラムを書いてで求めてもいいと思います。
さて、答えの数え上げをしていきます。
一番上の高さのときに、一番左の棒からスタートしたときに、上から番目の高さにいるときに、左から番目にたどり着くようなものの個数
とします(は0-indexedとします)。初期状態は、です。
すると、
のときに、、、の3つのどこかにいる必要があります。
それぞれ、のときに、左上、真上、右上にいて、そこから横線を通り(または通らず)、今の場所に移動します。
左(右)上から移動してくる場合
考えることは同じなので、今回は左上から移動する場合についてのみ考えます。
番目の棒線にたどり着くとき、との区間に横線を引くため、とおよびとの区間には、横線があってはいけません。
ですが、それ以外の部分は自由に横線をひくことができます。
この部分は、より左側と右側に分割することができ、幅がそれぞれ
とになります。
ということで、この二つの幅についての横線の置き方は、を参照することで求められます。
あとは、その二つとを掛け算すればよいので、
となります。
同様にすると、右上から移動するパターンは
となります。移動せずに降りてくる場合
の左右には横線があってはいけません。しかし、それ以外は横線を自由に置くことができます。ということで、次のようになります。
ということで、この3つの式の和がの値になります。
これを計算していくと、答えがにあります。