ABC132 D問題:Blue and Red Balls

問題. Blue and Red Balls

 K 個の青いボールと  N - K 個の赤いボールがある.この  N 個のボールを一列に並べたものを  b としたとき, b から青いボールが無くなるまで次の操作を行う. b の中にある連続する青いボールの部分列を任意に取り除き,取り除いてできた列を  b とする. b に対する任意の操作の中で操作回数の最小値を  b の最小操作回数と呼ぶ.任意の  1 \le i \le K に対して最小操作回数が  i となるボールの並べ方が何通りあるかを求めよ.

制約 1 \le K \le N \le 2,000

解法

最小操作回数が  i となるボールの並べ方が何通りあるかを考える.これは, K 個のボールを空でない  i 個に分割する組合せの数に等しく重複組合せで求めることができる.ここ(重複組合せの公式と例題(玉,整数解の個数) | 高校数学の美しい物語)の正の整数解の個数を求める問題に等しく, x_1 + x_2 + \cdots + x_i = K という方程式の正の整数解の個数で  \binom{K - 1}{i - 1} 通りとなる.
次に,青いボールが空でない  i 個に分割されたときの,赤いボールの並べ方を考える.赤いボールは青いボールを分割するために,青いボールを分割する  i - 1 箇所に少なくとも 1 つの赤いボールがなければならない. i - 1 箇所に 1 個ずつ赤いボールがあるとき,青いボールは  i 個に分割されているので,赤いボールの残りの  N - K - i + 1 個は  i + 1 箇所の中で好きな所に配置することができる.これは, x_1 + x_2 + \cdots + x_{i + 1} = N - K - i + 1 という方程式の非負の整数解の個数で  \binom{N - K + 1}{i} 通りとなる.
以上から最小回数が  i となるボールの並べ方は  \binom{K - 1}{i - 1} \times \binom{N - K + 1}{i} 通りとなる. 二項係数はパスカルの三角形で求めても間に合う.

計算時間 O(N^2)

方針はすぐ立ったけど実装であたふたした