Ninja of Train(Autumn Fest 2012 [J])

スポンサーリンク

概要

問題文 →
公式解説 →
自分の提出 →

解法

基本的なところは解説スライドがあるので省略します。

この問題は、

  • 状態ごとの数え上げを表すベクトル $v$
  • 遷移を表す疎行列 $A$

を用いて、$A^T v$ の成分の和として書くことができます。$A$ の大きさを $N = O(H^{1.5})$ とします。また、$A$ の非零成分は $O(N)$ 個しかありません。よって、この問題は、以下の方法で $O(N^2 + N\log N\log T)$ 時間で解くことができます。

  • $T = 1, 2, \ldots, 2N$ に対する答を計算する。疎行列をベクトルに掛けていけばよく、全体として $O(N^2)$ 時間である。
  • Berlekamp-Massey 法を用いて、線形漸化式を復元する。$O(N^2)$ 時間である。
  • Fiduccia’s algorithm や Boston-Mori algorithm などを用いて、線形漸化式の第 $T$ 項を求める。$O(N\log N\log T)$ 時間である。

参考:[多項式・形式的べき級数](3)線形漸化式と形式的べき級数

タイトルとURLをコピーしました