K - Shuffle and Max Bracket Score Editorial by sotanishy


公式解説 の母関数

\[ g(x) = \sum_{d=1}^{N-1} 2(N-d) C_{d-1} x^d (1+x)^{2N-2d} \eqqcolon \sum_{d=1}^{N-1} c_d x^d (1+x)^{2N-2d} \]

\(O(N \log N)\) で求める方法を述べます.\(g(x-1)\) を変形すると,

\[ g(x-1) = \sum_{d=1}^{N-1} c_d (x-1)^d x^{2N-2d} = x^{2N} \sum_{d=1}^{N-1} c_d (x^{-1}-x^{-2})^d = x^{2N} \sum_{d=1}^{N-1} (-1)^d c_d ((x^{-1}-1/2)^2-1/4)^d \]

となります.ここで

\[ h(x) = \sum_{d=1}^{N-1} (-1)^d c_d x^d \]

と定義すれば, \(g(x-1) = x^{2N} h((x^{-1}-1/2)^2-1/4)\) は polynomial Taylor shift,添字の2倍,reverse により計算できます.具体的には,

  • \(h\) を計算
  • \(-1/2\) の Taylor shift \((= h(x-1/2))\)
  • 添字の \(2\)\((= h((x-1/2)^2))\)
  • \(-1/4\) の Taylor shift \((=h((x-1/2)^2-1/4))\)
  • reverse \((=x^{2N}h((x^{-1}-1/2)^2-1/4))\)

によって \(g(x-1)\) を求めることができます.最後に,\(g(x-1)\) に対して \(+1\) の Taylor shift を行うことで \(g\) を求めることができます.Taylor shift は \(O(N\log N)\) 時間でできるので,全体の時間計算量は \(O(N \log N)\) です.

posted:
last update: