首页 > 其他分享 >[笔记]min25 筛

[笔记]min25 筛

时间:2024-11-28 21:23:32浏览次数:3  
标签:le dfrac min25 笔记 text lp sum 质数

解决积性函数 \(f\) 的前缀和问题。

下文中的一些记号:

  • \(F(n) = \sum_{i = 1}^{n} f(i)\):\(f(i)\) 的前缀和。

  • \(\text{lp}(n)\):\(n\) 的最小质因子。

  • \(p_k\):全体质数中第 \(k\) 小的质数。

  • \(\dfrac{x}{y}\):默认下取整。


首先尝试解决这个问题:求出

\[G(m) = \sum_{i \in P, i \le m} f(i) \]

其中 \(m \in \{\dfrac{n}{1}, \dfrac{n}{2}, \dfrac{n}{3} \cdots , \dfrac{n}{n}\}\),一共有 \(\sqrt n\) 中取值。

考虑 dp。设 \(g(j, m)\) 表示:

\[\begin{aligned} g(j, m) &= \sum_{1 \le i \le m} [i \in P \bigcup \text{lp}(i) > p_j] f'(i) \end{aligned} \]

也就是对于所有的质数或者最小质因数大于 \(p_j\) 的 \(f'\) 求和。

这里的 \(f'\) 需要满足下面的三个性质:

  • \(\forall p \in P, f'(p) = f(p)\)。

  • \(f'\) 是完全积性函数。

  • \(\sum f'\) 可以快速求值。

初始时,\(g(0, m) = \sum_{2 \le i \le m} f'(i)\)。

转移时分两种情况:

  • 若 \(p_j ^ 2 > m\):\(g(j, m) = g(j - 1, m)\)。因为不存在 \(i \in [1, m]\),使得 \(\text{lp}(i) > p_j\)。

  • 若 \(p_j ^ 2 \le m\):

\[\begin{aligned} g(j, m) &= g(j - 1, m) - f'(p_j) \times \left ( g(j - 1, \dfrac{m}{p_j}) - \sum \limits_{1 \le i < j} f'(p_i) \right ) \\ &= g(j - 1, m) - f'(p_j) \times \left ( g(j - 1, \dfrac{m}{p_j}) - g(j - 1, p_{j - 1}) \right ) \end{aligned} \]

这个式子怎么理解呢?首先,这里可以理解成从 \(g(j - 1, m)\) 里面筛掉所有 \(\text{lp} = p_j\) 的 \(f'\) 值。而筛掉的值一定可以表示成 \(p_j \times q\),其中 \(q\) 是一个 \(\le \dfrac{m}{p_j}\) 而且最小质因子 \(\le p_j\) 的数。最后减掉的那块,是 \(g(j - 1, \dfrac{m}{p_j})\) 里面的那部分质数。由于 \(f'\) 是完全积性函数,这两部分可以直接相乘。

以上部分时间复杂度被证明是 \(O(\dfrac{n ^ {0.75}}{\log n})\)。


上面求出了 \(G(m) = \sum_{i \in P, i \le m} f(i) = g(\pi(m), m)\)。

标签:le,dfrac,min25,笔记,text,lp,sum,质数
From: https://www.cnblogs.com/Link-Cut-Y/p/18575211

相关文章

  • [笔记]各种模板
    启动。快排(带随机)voidqsort(intl,intr){ if(l>=r)return; vector<int>p,q;p.clear(),q.clear(); for(inti=l;i<=r;i++){ if(a[i]<a[l])p.push_back(a[i]); if(a[i]>a[l])q.push_back(a[i]); } intu=l,v=r,val......
  • [笔记]插值
    垃圾插值给定\(n+1\)个点\((x_1,0),(x_2,0),(x_3,0)\cdots(x_n,0),(0,1)\)。求过这\(n+1\)个点的\(n\)次多项式。首先,答案肯定可以写成\(F(x)=a\sum\limits_{i=1}^{n}(x-x_i)\)的形式。关键是确定\(a\)是多少。这个多项式的常数项应该等......
  • [笔记]线性基
    线性基的定义:若干\(0,1\)向量的集合\(s\),使得\(\forall\overrightarrow{v}\ins\),不存在\(p_1,p_2\cdotsp_k(\overrightarrow{v_{p_i}}\ne\overrightarrow{v})\),使得\(\oplus_{1\lei\lek}\overrightarrow{v_{p_i}}=\overrightarrowv\)。线性基可以类比于平......
  • 反演笔记
    反演反演若已知\(f(n)=\sumg(k)\),用\(f\)表示\(g\)的过程就叫“反演”。二项式反演参考一下邓老师的PPT。经典题:\(n\)个元素错排的方案数。要求线性。考虑枚举有\(k\)个人非错排,可以得到这\(k\)个人一共有\(\dbinom{n}{k}\)种选法,剩下的人有\((n-k)\)......
  • 高等代数笔记
    高等代数笔记。$\text{\S}\1\$数域(Field)下面给出一些基本数学符号:\(\mathbb{R}/\mathbf{R}\):实数域。\(\mathbb{C}/\mathbf{C}\):复数域。\(\mathbb{Z}/\mathbf{Z}\):整数域。定义1.1:定义数环\(\mathrm{C}\)表示一个数集,满足其对加、减、乘都封闭......
  • Python机器学习笔记(二、监督学习算法基础)
    一、分类与回归监督机器学习问题主要有两种,分别叫作分类(classification)与回归(regression)。区分分类任务和回归任务有一个简单方法,就是问一个问题:输出是否具有某种连续性。如果在可能的结果之间具有连续性,那么它就是一个回归问题;不存在连续性,则一般是分类问题。二、泛化、......
  • 摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/28
    LearningRoadmap:Section1:IntrotoParallelProgramming&MUSADeepLearningEcosystem(摩尔线程国产显卡MUSA并行编程学习笔记-2024/11/20)Ubuntu+Driver+Toolkit+conda+pytorch+torch_musa环境安装(摩尔线程国产显卡MUSA并行编程学习笔记-2024/11/24-CSDN博客)C/C++R......
  • 程序员修炼之道从小工到专家第五章读书笔记
    重构的定义重构:在不改变软件外部行为的前提下,对代码进行修改以改善其内部结构的过程。重构的目的是提高代码的可读性、可维护性和可扩展性。重构的动机:面对遗留代码或快速开发的代码,重构可以帮助我们清理技术债务,避免代码腐化。何时进行重构三的法则:当一个功能被重复三次时,就......
  • Unrotate Vector(不旋转向量)和Rotate Vector(旋转向量)学习笔记
    在学习alsv4时,看到作者为了使摄像机跟随角色头部方向进行飘逸,连续使用了UnrotateVector和RotateVector进行坐标变化,有些不懂。。这里的UnrotateVector在UE5中文被翻译成了不旋转向量,其实应该是逆向旋转向量。UnrotateVector将世界坐标系变成局部坐标系,再来一次RotateVector......
  • 网络安全基础知识详解,看这一篇就够了!(内附学习笔记)
    一、什么是网络安全?百度上对“网络安全”是这么介绍的:“网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行,网络服务不中断。”嗯…是不是感觉有点抽象。那么我们再换一种表述:网络安......