【题解】ABC238G 哈希 随机化

怎么全是莫队。来介绍一下官方做法。

考虑将数分解质因数后问题变成每个数有若干质因子,查询区间内每个质因子数量之和是否为三的倍数。

查询是否所有数的出现次数都为 $k$ 的倍数的一个套路,如下:

给每个数随机赋权值值 $c_i\in[0,k)$,那么 $S$ 中所有数出现次数都是 $k$ 倍数的必要不充分条件就是 $\sum_{u\in S}c_u$ 也是 $k$ 的倍数。

使用哈希的思想,随机 $B$ 组这样的 $\{c_i\}$,我们认为同时满足了这些必要不充分条件就是必要充分的。

考虑正确率,存在一个数出现次数不是 $k$ 的倍数且总和是 $k$ 的倍数的情况的概率可以近似认为一个随机的值恰好为 $k$ 倍数的概率,近似为 $\frac 1 k$,要达到 $1-\epsilon$ 的正确率只需要做 $-\log \epsilon$ 次即可。

直接维护 $B$ 个前缀和,复杂度瓶颈在因数分解。

posted @ 2023-11-21 19:34  寂静的海底  阅读(11)  评论(0编辑  收藏  举报  来源