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: