首页 > 其他分享 >杜教筛学习笔记

杜教筛学习笔记

时间:2024-02-23 22:26:29浏览次数:15  
标签:lfloor right frac sum 笔记 杜教 学习 rfloor left

杜教筛

是求一个数论函数f的前缀和,令其为S

我们考虑构造一个数论函数g,根据 狄利克雷卷积

\[\begin{aligned} \sum_{i=1}^{n}(f * g)(i) & =\sum_{i=1}^{n}\sum_{d \mid i}g(d)f\left(\frac{i}{d}\right) \\ & =\sum_{i=1}^{n}g(i)S\left(\left\lfloor\frac{n}{i}\right\rfloor\right) \end{aligned} \]

可以推出

\[\begin{aligned} g(1)S(n) & = \sum_{i=1}^n g(i)S\left(\left\lfloor\frac{n}{i}\right\rfloor\right) - \sum_{i=2}^n g(i)S\left(\left\lfloor\frac{n}{i}\right\rfloor\right) \\ & = \sum_{i=1}^n (f * g)(i) - \sum_{i=2}^n g(i)S\left(\left\lfloor\frac{n}{i}\right\rfloor\right) \end{aligned} \]

所以我们只需快速求出\(g\)和\((f*g)\)的前缀和,就可以快速求出S

然后时间复杂度不会证明,但直接打是\(O(n^{\frac34})\),预处理前\(O(n^{\frac23})\)位前缀和是\(O(n^{\frac23})\)

预处理+外面套上数论分块也是\(O(n^{\frac23})\)

难点就是构造g函数,所以学习一下数论函数

标签:lfloor,right,frac,sum,笔记,杜教,学习,rfloor,left
From: https://www.cnblogs.com/zhy114514/p/18028184

相关文章

  • wqs二分学习笔记
    wqs二分wqs是用来处理一类带有恰好选K个这种限制的问题我们如果发现这个答案关于k的函数是凸函数,那么就可以二分出斜率,然后拿它去切这个函数设这个直线为\(y=ax+b\),以上凸为例,我们要求截距最大,就是b最大,等价于\(y-ax\)最大,也就是把k限制对应的贡献-a,然后再算答案,然后就可以去......
  • 线性基学习笔记
    线性基preface需要一点线性空间知识线性相关:在向量空间V的一组向量\(A:a_1,a_2...a_m\)如果存在不全为零的数\(k_1,k_2,···,k_m\),使\(\suma_ik_i=0\)则称向量组A是线性相关的,否则线性无关线性表出:在向量空间V的一组向量\(A:a_1,a_2...a_m\)如果存在一组实数\(k_......
  • 代表元学习笔记
    代表元概念网络上没有明确的定义,只能在少量博客中找到一些信息大概是处理一类会算重的统计问题,在每个算重的集合中选出一个代表来统计以去重,就是代表元例子代表元只能说是一种思想,用于问题的转化与化简森林连通块数量可以用点数-边数快速计算但有些时候不好维护,于是我们考......
  • FWT学习笔记
    FWT/快速沃尔什变换前言FWT是处理一类问题形如(\(\oplus\)指or,and,xor二元运算符)\[c_{i}=\sum_{i=j\oplusk}a_{j}b_{k}\]考虑像FFT一样,用\(O(n\logn)\)的复杂度构造出\(fwt\),在\(O(n)\)计算出\(fwt_a\timesfwt_b\),最后在\(O(n\logn)\)将\(fwt\)转化回去正题OR考虑构......
  • Edu-English-Phonetic-IPA:国际音标发音学:英语音标的学习神器,终于找到
    https://mp.weixin.qq.com/s?__biz=MzU3NTIzOTA5OA==&mid=2247493736&idx=1&sn=8ed10241adeaa148ee3053f5db94214e&chksm=fd248ebdca5307abf32a39eed20bb83818e00692a87298d3b1c2d2cb7b2d6572df0c0301fe7d&scene=27英语音标的学习神器,终于找到音标是记录语言的符号,对音标的正确......
  • 如何学习PYTHON(python和c++哪个难学)
    1.如何学习PYTHONPython是一门简单易学的编程语言,但想要真正掌握它需要花费不少时间和精力。我的建议是先从Python基础开始学习,掌握基本语法和常见数据结构,再逐步深入学习高级特性和应用场景。 在学习Python的过程中,https://www.fuligou8.com/noking/4006.html我们可以通过阅......
  • C语言学习方法
    学习C语言是许多编程初学者的首选,https://www.fuligou8.com/noking/22013.html因为它是一种强大且广泛使用的编程语言。然而,对于那些刚开始学习C语言的人来说,掌握它可能会有一定的挑战。在本文中,我将分享一些学习C语言的方法,帮助你更轻松地掌握这门编程语言。  1.基础知识的......
  • 【学习笔记】 - 基础数据结构 :Link-Cut Tree
    发现树剖代码太长了,给我恶心坏了学个代码短点的能写树剖题的数据结构吧前置知识平衡树splay树链剖分简介以及优缺点介绍Link-CutTree,也就是LCT,一般用于解决动态树问题Link-CutTree可用于实现重链剖分的绝大多数问题,复杂度为\(O(n\logn)\),看起来比树剖的\(O(n\lo......
  • python 加密 变量 (可用于深度学习模型加密)
    需求:深度学习基于pytorch,模型需要加密。查看到网上有使用cryptography加密的方法,如https://blog.csdn.net/weixin_43508499/article/details/124390983,总体思路是调用torch的save函数将模型保存为io.BytesIO,然后使用cryptography将保存为io.BytesIO的字节进行加密,解密......
  • 第7章 程序在何种环境中运行的 笔记
    硬件环境是程序运行的基础。它包括处理器、内存、硬盘、显示器等硬件设备。这些设备为程序的运行提供了基本的物理支持。例如,处理器负责执行程序的指令,内存则负责存储程序的数据。没有这些硬件设备,程序就无法运行。操作系统环境是程序运行的平台。操作系统是一种特殊的软件,它管理......