位运算

给定 \(a_0 ...,a_{2^\omega -1}\) ,对于 \(k \in [0,w)\) 求第 \(k\) 位为 \(1\) 的数的 \(a\) 的和。

首先可以 \(\mathcal O(2^\omega\omega)\) 计算,考虑优化

将所有数插到 01trie 中,注意到 01trie 是满的,可看作线段树的结构。

那么可以得到 \(x\) 插入的位置为 \(2^\omega +x\)

做一遍子树和,第 \(i\) 位的答案为第 \(i\) 层向右到达点的权值和。

复杂度 \(\mathcal O(2^\omega)\)

posted @ 2022-11-21 18:01  chihik  阅读(19)  评论(0编辑  收藏  举报