Java教程

论杜教筛

本文主要是介绍论杜教筛,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

杜教筛:在 $O(n^{2/3})$ 的时间内求出积性函数 $f(x)$ 的前缀和。

 

注意事项:

1. 线性预处理 $n^{2/3}$ 内的所有 $f$ 的值再开始筛。

2. 一定要用一个数组(而不是 map)来记忆化,对于所有 $d$ 记忆 $n/d$ 处的 $f$ 前缀和。

3. 如果有多次询问,用一个 unordered_map 记忆所有 $f$ 的前缀 $n$ 的值(注意不是 $d$),可以避免对于一个固定的 $n$ 多次去筛所有 $n/d$ 处的前缀和。

4. 这种题一般 $n \leq 10^{10}$,一定要注意取模时不要溢出。。。

5. 非常卡常(

这篇关于论杜教筛的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!