公式

B - Heavy Rotation 解説 by Rice_tawara459


\( \mathrm{sum}(A) \lt K \) のとき、いかなる区間の重さの総和も \(K\) 未満であるため、操作を一度も行えず、答えは \(1\) 通りです。

\( \mathrm{sum}(A) \ge K \) の場合を考えます。

\( \mathrm{sum}(A)-A_i \lt K \) となるような \(i\) の集合を \(I\) とおき、 \(|I|=m\) とします。 \(i \in I\) について、荷物 \(i\) を含まない任意の区間の重さの総和も \(K\) 未満です。したがって、どの操作も荷物 \(i\) を含まざるを得ません。操作は区間を巡回シフトするだけなので、集合 \(I\) に属する荷物どうしの相対的な順序は、巡回を除いて不変です。したがって、これらの荷物の相対順序としてありうるものは \(m\) 通りです。

一方で、 \( \mathrm{sum}(A)-A_i \ge K \) となるような \(i\) について、荷物 \(i\) の位置は自由に決めることができます。たとえば、 \((L,R)=(1,N)\) として、荷物 \(i\) が最も左にくるまで操作を行った後、 \((L,R)=(2,N)\) として適切な回数操作を行い、また \((L,R)=(1,N)\) として適切な回数操作を行うことで、「荷物の列から荷物 \(i\) を取り除き、好きな位置に挿入する」ということができます。

よって、全体の並びの総数は、 \(I\) の要素が形成する \(m\) 通りの相対順序に、他の \((N-m)\) 個の荷物を任意の配置した組合せの総数であり、 \(m=0\) のときは \(N!\) 通り、 \(m \ge 1\) のときは \(\frac{N!}{(m-1)!}\) 通りとなります。

投稿日時:
最終更新: