I - Prefix Or Editorial by harurun4635


公式解説が消えてるので、代わりの解説です。

前計算として \(\displaystyle cnt[bit] = \sum_{i \subset bit} A. \textup{count}(i)\) としておきます。

\(dp[bit]\)\(A\) の部分集合 \(A_{bit} = \{a_i \mid a_i \subset bit, a_i \in A \}\)について元の問題を解いた時の答えとします。

すると \(\displaystyle dp[bit] = \min_{i \subset bit} \Big( dp[i] + (cnt[bit] - cnt[i]) \cdot bit \Big)\) により遷移ができます。

\(cnt\) は高速ゼータ変換で、\(dp\)\(i\)\(bit\) よりも \(\textup{bit\_count}\) が1小さいところからの遷移のみを考えても良いため \(\textup{bitDP}\) で、それぞれ計算可能です。

計算量は\(O(n + m \cdot 2^m) \) (ただし \(m\)\(\max \small (a)\)\(\mathrm {bit\_length}\)) となります。

posted:
last update: