Data Structure
Bitset
HDU6085 Rikka and Candies
题意 : 给出长为 n 的数组 a 和 长为 m 的数组 b,q次询问,询问有多少组 \((i,j)\) 满足 \(a_i\ mod\ b_j=k\) 。输出答案对 2 取模的值 , 输入的数 \(\le 5e4\)。
-
\(a_i\ mod\ b_j=k\) 相当于 \(a_i \ge k,b_j>k\) 且 \(b_j\) 为 \(a_i+k\) 的约数,为方便,认为任何正整数都为 0 的约数。
-
这里从大到小枚举 k ,记数组 \(c_i\) 为 b 中为 i 的约数,且大于 k 的数的个数对 2 取模的值。每次 k 减小 1 只会有 n/k 次修改, 询问答案即为 \(\sum_{a_i\ge k}{c_{a_i-k}}\), 因此对 a 开桶记录个数对 2 取模的值, 询问时计算桶右移 k 为后与 c 异或, 用 bitset 可以 \(O(n/w)\) 单次询问.
-
时间复杂度 \(O(n\log n+nk/w)\).

浙公网安备 33010602011771号