公式

P - Sum of Max of Difference 解説 by PCTprobability


この解説では、\(N,M \le 2000\) の解法を解説します。

まず、\(\max_{1 \le i < j \le N} (A_j - A_i)\) が負となるようなものについて解きます。

\(1 \le K \le M-1\) に対して、\(\max_{1 \le i < j \le N} (A_j - A_i)\)\(-K\) 以下になるものの個数を求められればよいです。そのような個数は \(A\) に登場する数字を決めればよく、\(\displaystyle \binom{M-(N-1)(K-1)}{N}\) 通りあります。

以降、\(\max_{1 \le i < j \le N} (A_j - A_i)\) が正の場合について解きます。\(0 \le K \le M-1\) に対して、\(\max_{1 \le i < j \le N} (A_j - A_i)\)\(K\) 以下であるものの個数が求められればよいです。

\(A\) の末尾に \(K+1\) を付け加えた数列 \(B\) と、\(B\) を末尾から見て厳密な最大値を取る部分だけで構成した数列 \(C\) を考えます。\(C\) に含まれる index の集合を固定した場合、\(C\) に含まれない index に対応する \(A_i\)\(K+1\) 通りの値を取ることができます。

よって、\(\max_{1 \le i < j \le N} (A_j - A_i)\)\(K\) 以下である数列の個数は、\(\displaystyle \sum_{|C|=1}^{N+1} (K+1)^{N+1-|C|} \times \binom{M-K-1}{|C|-1} \times \binom{N}{|C|-1}\) 通りです。

上記より、本問題を \(\mathrm{O}(NM)\) で解くことができます。

投稿日時:
最終更新: