2019年7月24日水曜日

TDPC F - 準急

TDPC F - 準急

1,...,i1, ..., iまでの停車駅の組み合わせをf(i)f(i)通りとする。K1K-1駅目までは止まるかどうか自由に選べるので

f(i)=2f(i1)(2i<K)f(i) = 2f(i-1) \qquad (2 \le i < K)

である。KK駅目以降は、すでにK1K-1駅連続で止まっている場合に停車できないため、このパターンを数えて2f(i1)2f(i-1)から引かなくてはいけない。端的に言うと、f(i1)f(i-1)通りの組み合わせの中でii駅目に停車できないのは(停車を○、通過を✕で表すと)

1 i-k-1 i-k i-(k-1) i-1 i
停車

というパターンのみである。したがって、

f(i)=2f(i1)f(ik1)(Ki<N)f(i) = 2f(i-1) - f(i-k-1) \qquad (K \le i < N)

という漸化式が立つ。

最後に、NN駅目には必ず止まるので特別扱いして

f(N)=f(N1)f(Nk1)f(N) = f(N-1) - f(N-k-1)

となる。

さて、大枠はこれでよさそうなのだが、境界ケースについて考えてみる必要がある。まず、KK駅目に停車できないのは1パターンのみなので、K<NK<Nならf(K)=2f(K1)1f(K) = 2f(K-1)-1。また、K+1K+1駅目には必ず止まれる1のでf(K+1)=2f(K)f(K+1) = 2f(K)である。上の漸化式と比較すると、f(0)=0,f(1)=1f(0)=0, f(-1)=1とするとつじつまがあっていることがわかる。


  1. 1駅目に必ず止まるという条件による。 ↩︎