[笔记]杜教筛核心原理

从暴力到杜教筛:高效求解LCM和问题的算法演进与实现 最小公倍数(LCM)是数论与算法中的基础概念,用于求解两个或多个整数公共倍数中的最小值,其计算依赖于最大公约数(GCD)。理解LCM与GCD的互逆关系是解决许多数论问题的关键。在算法优化领域,LCM的计算效率直接影响着涉及整数运算和数论变换的算法性能,例如在密码学、计算机图形学及高性能计算中。当问题规模扩大,如需要计算从1到n所有数对LCM之和时,朴素的O(n²)暴力解法将面临严重的性能瓶颈。此时,需要引入更高级的数学工具和算法思想进行优化。欧拉函数(Euler‘s totient function)作为数 阅读详情

∑ni=1∑mj=1gcd(i,j)∑i=1n∑j=1mgcd(i,j)
=∑nd=1d∗f(d)=∑d=1nd∗f(d)
=∑nd=1d∗∑d|jμ(j/d)∗F(d)=∑d=1nd∗∑d|jμ(j/d)∗F(d)
=∑i×j<=ni∗μ(j)∗F(i∗j)=∑i×j<=ni∗μ(j)∗F(i∗j)
=∑nT=1F(T)∗ϕ(T)=∑T=1nF(T)∗ϕ(T)
=∑nT=1[nT][mT]ϕ(T)=∑T=1n[nT][mT]ϕ(T)

———-杜教筛:
已知问题:

S(n)=∑i=1nf(i)S(n)=∑i=1nf(i)

取一个积性函数g使得f*g方便计算前缀和并做如下变换
(g∗f)(i)=∑d|if(d)∗g(i/d)(g∗f)(i)=∑d|if(d)∗g(i/d)

∑i=1n(g∗f)(i)=∑i=1n∑d|if(d)∗g(i/d)∑i=1n(g∗f)(i)=∑i=1n∑d|if(d)∗g(i/d)

=∑i∗j<=nf(i)∗g(j)=∑i∗j<=nf(i)∗g(j)

=∑i=1ng(i)∑j=1n/if(j)=∑i=1ng(i)∑j=1n/if(j)

=∑i=1ng(i)∗S(n/i)=∑i=1ng(i)∗S(n/i)

就可以得到
S(n)=1∗S(n)=g(1)∗S(n)S(n)=1∗S(n)=g(1)∗S(n)

=∑i=1ng(i)∗S(n/i)−∑i=2ng(i)∗S(n/i)=∑i=1ng(i)∗S(n/i)−∑i=2ng(i)∗S(n/i)

=∑i=1n(g∗f)(i)−∑i=2ng(i)∗S(n/i)=∑i=1n(g∗f)(i)−∑i=2ng(i)∗S(n/i)

后面就是递归计算了,注意要记忆化S

算法竞赛必备资源大放送:从《ACM模板》到《初等数论》一站式PDF合集 本文分享了算法竞赛必备的PDF资源合集,包括《ACM模板》、《算法全家桶》和《初等数论》等核心资料,涵盖数据结构、数论、组合数学等专题。这些资源特别适合ACM/ICPC和信息学奥赛选手系统化学习,提供详细的代码实现和实战解析,帮助提升竞赛水平。 阅读详情

相关推荐

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

[学习笔记]杜教筛法的原理

一、引入 通常,在莫比乌斯反演的题目中会推出下面这样的式子: ∑i=1n⌊ni⌋f(i)∑i=1n⌊ni⌋f(i)\sum_{i=1}^n\lfloor\frac ni\rfloor f(i) 其中 fff 是积性函数。 我们知道,当 1≤i≤n1≤i≤n1\le i\le n 时 ⌊ni⌋⌊ni⌋\lfloor\frac ni\rfloor 的取值只有 O(n−−√)O(n)O(\sqr...

女装的你,如此好看! 636

【实战指南】OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦

OpenClaw 使用 Bird Skill 接入 X(Twitter)的终极省心方案:告别每次都要手动喂 Cookie 的痛苦

hampeter的博客 1798

杜教筛入门

以下主要的话都用无序列表表示。 # 钦定你已经可以再O(n−−√)O(n)O(\sqrt{n})的复杂度内求出: ∑i=1n⌊ni⌋∑i=1n⌊ni⌋\sum_{i=1}^n{\lfloor \frac{n}{i} \rfloor} ∑i=1ni∗⌊ni⌋∑i=1ni∗⌊ni⌋\sum_{i=1}^n{i*\lfloor \frac{n}{i} \rfloor} 对于第一个,先枚...

pupuvovovovo的博客 563

设计空间探索:乘法器设计的面积、延时、功耗优化

4-2压缩器在减少延迟方面表现出色,适用于需要快速压缩的场景。6-2压缩器在资源占用方面具有优势,能够减少压缩树的层次数量和逻辑门数量。优化功耗:通过合理组合不同类型的压缩器,可以在延迟、资源占用和功耗之间找到最佳平衡点,从而实现优化的设计目标。###参考资料。

SiArch的博客 1872

简单概述人形机器人的“大脑、小脑”

原创 仲翔云人形机器人产业通2024年09月13日 19:41上海人形机器人的大脑和小脑是其控制系统的关键组成部分,它们模拟了人类大脑和小脑的功能,以实现复杂的运动控制和决策过程。

AI生成曾小健3 2069

杜教筛

实质就是这么一条等式 ∑i=1n∑d|if(d)=∑i=1n∑j=1⌊n/i⌋f(j)=∑i=1nf(i)⌊n/i⌋\sum_{i=1}^n\sum_{d|i}f(d)=\sum_{i=1}^n\sum_{j=1}^{\lfloor n/i \rfloor }f(j)=\sum_{i=1}^nf(i)\lfloor n/i \rfloor 通常左边不容易求,那么我们就将等式卷上一个简单的积性函数

LYD729 488

2. Netty使用JSerialComm进行串口读取(二)

现在开始处理这些问题 第一个问题:串口读取超时异常一路传播到最后也没有处理。 ​ 第二个问题:即使处理了该异常,程序仍然退出,这不能满足一些实际使用要求需求。该问题与设置很长的读取超时时间没关系,无论多长到时间后总会退出。

s3c2410的博客 2461

素数筛法

注释很详细 直接上代码了 唯一分解定理是重点 #include<iostream> #include<algorithm> #include<cstring> #define maxn 1000 #define ll long long using namespace std; int prim[maxn],tot; int flag[maxn<<...

Stydwn的博客 365

CARLA 0.9.15从零开始:环境搭建与基础场景实战指南

本文是CARLA 0.9.15从零开始的完整环境搭建与基础运行教程。详细介绍了在Linux系统下配置Python环境、下载安装CARLA核心软件包、启动服务器以及运行第一个基础场景的步骤。重点演示了如何通过Python客户端脚本生成随机车流,并手动控制EGO车辆在仿真城市中行驶,为自动驾驶算法开发构建了坚实的仿真测试基础。

weixin_29053383的博客 776

YOLO项目部署:从Python脚本到Docker容器的企业级交付全流程

YOLO模型企业级Docker部署方案 核心挑战 环境一致性:解决"本地能跑,服务器崩掉"问题 可扩展性:支持单实例到多实例扩展 稳定性:确保99.9%可用性 部署流程 项目改造:模块化代码,分离配置 Docker镜像:支持CPU/GPU环境 API服务:封装推理逻辑 监控告警:实现自动化运维 技术方案 需求 解决方案 环境一致性 Docker镜像+依赖冻结 可扩展性 K8s+负载均衡 稳定性 健康检查+自动重启 项目结构 模块化代码组织 外部化配置管理 精确依赖版本控制 摘要重点:通过

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1229

杜教筛法的原理

比如说要求一个数论函数f的前N项和,记S(n)=Σf[i] 其中i输入1到n 需要一个辅助函数g 那么: 考虑一下这个式子怎么理解,我自己的想法是考虑g[i]对答案的贡献,那么显然是对f[i*2],f[i*3],f[i*4]这样的,但是这个i*j不能超过n 那么把右边那个求和的i从1变成i从2,那么两式子相减就是g[1]*s[n] 比如说求mu,phi这样的函数,g就取1就好了

lpf_as_a_oier的博客 403

【100%通过率】华为od机试C卷【小朋友来自多少小区】JS 实现

幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个.我们将这些数量汇总到数组 garden 中。请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?

MISAYAONE的博客 2004

杜教筛学习笔记

看着身边的大佬们这么快就学了各种筛,很是紧张啊…… 接下来强行学习一下 简介 用途:O(n23)O(n^\frac{2}{3})O(n32​)求积性函数的前缀和。 本质就是推式子。 设有某个函数f(i)f(i)f(i),我们要求∑i=1nf(i)\sum_{i=1}^nf(i)∑i=1n​f(i) 根据具体情况建出辅助函数g(i)g(i)g(i)。求狄利克雷卷积h=g∗fh=g*fh=g∗f 记S...

A1847225889的博客 280

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

莫比乌斯反演+常见数论函数的性质+狄利克雷卷积+数论分块+杜教筛学习笔记

目录 预备知识 积性函数 狄利克雷卷积 莫比乌斯反演 莫比乌斯反演的约数形式 莫比乌斯反演的倍数形式 数论分块 习题(狄利克雷卷积+莫比乌斯反演) 杜教筛 ...

weixin_30551963的博客 324

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

「学习笔记」数学大礼包

数论函数 狄利克雷卷积 \((f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})\) 积性函数 若满足\((a,b)=1\),\(f(a)f(b)=f(ab)\)的数论函数\(f\)叫做积性函数 性质:若\(f, g\)为积性,\(f*g\)也为积性 证明:\(a,b\)为任意互质正整数,\((f*g)(a)(f*g)(b)=\sum_{d|a} f(d)g(\frac{a}...

weixin_30871701的博客 210

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

信奥中的数学:积性函数、莫比乌斯反演

信奥中的数学:积性函数、莫比乌斯反演

青少年趣味编程 250

ACM 学习笔记(三) 数学入门

题目解析   假设你正在爬楼梯。需要 n 阶你才能到达楼顶。   每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?   注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 4. 1 阶 + 1 阶 + 1 阶 5. 1 阶 + 2 阶 6. 2 阶 + 1 阶 思路解析   关键就在于当楼梯数n+1阶时,与n阶有什

小小何先生的学习之旅 584

数学模型

Catalan 卡特兰数 — 计数的映射方法的伟大胜利 [AHOI2012]树屋阶梯 [luogu1976]鸡蛋饼 [SCOI2010]生成字符串 Stirling 斯特林数 容斥 容斥原理(翻译) [UVA10325]The Lottery(状压+容斥) [UVA11806]Cheerleaders [SP4191]MSKYCODE - Sky Code [CQOI2015]选数(容斥+递...

weixin_33709590的博客 98

杜教筛简介

杜教筛简介 %%%唐老师 %%%YYB 前置技能 莫比乌斯反演 用途&amp;过程 在低于线性的时间内求出一些积性函数的前缀和。 假设我们现在要求一个积性函数的前缀和S(n)=∑ni=1f(i)S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^{n}f(i) 设一个积性函数g(i)g(i)g(i) 则 ∑i=1n(g∗f)(i)=∑i=1n∑d|ig(d)f(...

forezxl的博客 4795

一些基础算法的模板(持续更新)

更新中 //Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft //To be continued... //Suffix Automation char str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin

扩展の灰(Extended Ash/Cooevjnz) 3865

扩展gcd以及同余方程ax=b(mod M)

关于扩展gcd其实没有必要搞懂,背下来就好了如果不会的自行学习 对于方程ax=b(mod M),我们可以将其化简成为ax+My=b,让后用扩展gcd求解 当b|r=gcd(a,M)时,方程有r个解,否则无解,对于有解的情况,每个解为用gcd求出的x乘上b/r+k*(M/r) int extgcd(int a,int b,int& x,int& y){ if(b){ int r=extg

扩展の灰(Extended Ash/Cooevjnz) 2281

Jzoj4307 喝喝喝

显然,如果令w[i]=s[i]-k,那么显然s[i]|w[j]就是s[j]%s[i]=k的必要条件,那么我们倒序枚举每个开头l,枚举w[l]的每个因数看看他在s[l+1]~s[n]中有没有出现,求出一个位置最靠近l的r,那么贡献就是r-l #include #include #include #define INF 0x7f7f7f7f using namespace std; int n,

扩展の灰(Extended Ash/Cooevjnz) 722
上一篇: 51Nod1306 高楼和棋子
下一篇: 51Nod1592 数列积
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值