Loading

bitset 矩阵转置求和 trick

问题:给定 \(n\) 个 长度为 \(m\) 的 bitset,对于每个 \(1\le i\le m\),求有多少个 bitset 的第 \(i\) 位为 \(1\)

考虑如下算法:

分治,记当前分治区间为 \([L, R]\),我们目标求出 \(\lfloor \log_2 n \rfloor + 1\) 个 bitset,这些 bitset 的第 \(i\) 位一起表示 \(L\sim R\) 的 bitset 的第 \(i\) 位为 \(1\) 的个数 的 二进制。

考虑合并两边,就是二进制下的加法模拟,用 bitset 的异或和按位与可以做完。

时间复杂度:\(T(n) = 2T(n / 2) + O(\frac m {\omega} \log n) = O(\frac {nm} {\omega})\),使用主定理可得。

posted @ 2026-06-13 10:28  Sktn0089  阅读(41)  评论(0)    收藏  举报