【转载】数论学习笔记(Blog of tyqtyq)
from a famous oier \(\texttt{tyqtyq}\)请点链接tyqtyq~! - 博客园 (cnblogs.com)
数论分块
\(\sum_{i=1}^{n} \lfloor\frac{n}{i}\rfloor \times f(i)\)
在\(O(n)\)筛出\(f(i)\)的前缀和后, 可以在单次\(O(\sqrt n)\)的复杂度下求出上式.
考虑\(\lfloor\frac{n}{i}\rfloor\)的取值个数. 在 \(i \leq \sqrt n\)时最多只有\(\sqrt n\)个\(i\), 故最多只有\(\sqrt n\)个取值.
在\(i>\sqrt n\)时, \(\lfloor\frac{n}{i}\rfloor \leq \frac{n}{i}<\sqrt n\), 故最多只有\(\sqrt n-1\)个取值.
因此我们可以考虑枚举\(\lfloor\frac{n}{i}\rfloor\)的取值. 因为函数不下降我们考虑枚举每个取值区间的左右端点. 不妨设某个取值区间的左端点是\(l\), 考虑求出该取值区间的右端点\(r\). 不妨设\(\lfloor\frac{n}{l}\rfloor = k\), 我断言\(r = \lfloor\frac{n}{k}\rfloor\). 因为\(kr \leq n \leq (k+1)r\), 所以必然在取值区间内. 又\(k(r+1) \geq n\)所以\(r+1\)不在取值区间内. 故右端点为\(r\).
莫比乌斯反演
两个性质
\(\sum\limits_{d|n} \mu(d) = [n=1]\) (经常用来展开\([f(n)=1]\))
\(\sum\limits_{d|n} \varphi(d) = n\)
对于 \(\gcd\) 的反演(出现\(\gcd\)的时候枚举\(\gcd\)也是一种时常奏效的方法):
\]
对于\(\sigma_0\)的反演
\]
对于\(\varphi\)的反演
\]
反演本质
\]
狄利克雷卷积 与 杜教筛
下文中的\(A\),\(B\),\(C\)均指某积性函数.
狄利克雷卷积
定义:
\(A*B(n) = \sum\limits_{d|n} A(d)B(\frac{n}{d})\)
几个常用的卷积
\(\varphi *I = id\)
\(\mu * I = \epsilon\)
\(\epsilon * A = A\)
\(A*(B*C) = (A*B)*C\)
\(A*B = B*A\)
\((A+B)*C = A*C+B*C\)
杜教筛的原理
设\(A = B*C\), 于是有
\]
不妨设\(S(n) = \sum\limits_{i=1}^{n} B(i)\)所以\(C(1)S(n) = \sum\limits_{i=1}^{n}A(i) - \sum\limits_{d=2}^{n}C(d)S(\lfloor\frac{n}{d}\rfloor)\)
若选择一个较好的\(C\)和\(A\), 则可以通过数论分块在\(T(n) = O(\frac{n}{\sqrt m}+m)\)的时间复杂度内完成此问题, 其中\(m\)是一个常数, 代表我们需要先使用线性筛筛出\(S(1\sim m)\), 可以发现在\(m = n^{\frac23}\)时算法复杂度为\(O(n^\frac23)\)为最优.
【转载】数论学习笔记(Blog of tyqtyq)的更多相关文章
- 五一DAY1数论学习笔记
by ruanxingzhi 整除性 如果a能把b除尽,也就是没有余数,则我们称a整除b,亦称b被a整除.(不是除以,是整除!!) 记作:\(a|b\) |这个竖杠就是整除符号 整除的性质 自反性 对 ...
- [转载]Log4net学习笔记
Log4net 学习笔记: 主要是根据apache站点整理的: 原文链接:http://logging.apache.org/log4net/release/sdk/ http://logging.a ...
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)
~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...
- 转载-python学习笔记之输入输出功能读取和写入数据
读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...
- 转载-Python学习笔记之文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- 转载——JavaScript学习笔记:取数组中最大值和最小值
转载自:http://www.w3cplus.com/javascript/calculate-the-max-min-value-from-an-array.html. 取数组中最大值 可以先把思路 ...
- (转载)Android学习笔记⑨——android.content.ActivityNotFoundException异常处理
异常1:Java.lang.ClassNotFoundException 08-13 18:29:22.924: E/AndroidRuntime(1875):Caused by: Java.lang ...
- 转载-python学习笔记之文件I/O
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- 转载-python学习笔记之常用模块用法分析
内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(ob ...
随机推荐
- VM虚拟机的安装使用
虚拟机的安装使用 1.安装win10镜像 1.点击创建新虚拟机 2.选择典型,然后下一步 3.稍后安装操作系统,然后下一步 4.选择windows操作系统,版本为win10 x64,然后下一步 5.虚 ...
- 在IIS Express下部署NuGet私服
用途 个人开发,部署自己的NuGet pkg. 环境 Win11 IIS Express (轻度使用,不安装IIS,而使用VS预装的IIS Express) VS2022 步骤 开发环境准备 因我拟用 ...
- 【Docker】命令行操作
Docker常用命令 帮助命令 docker version docker info docker --help Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker ...
- Ink 和 TravisCI 更配哦
前言 去年还是前年,无意间接触到ink,看到是用go写的,非常小巧和精简,于是乎fork了下,还整了个供ink用的docker镜像``. 不过那时候热衷于折腾博客...结果也没折腾出什么来, 今天整理 ...
- 【ESP32】两种模拟 USB 鼠标的方法
上一篇水文中,老周给大伙伴们扯了关于 idf 中添加自定义 Arduino 组件的方案.这次咱们做一下 USB 鼠标玩玩. 很遗憾的是,老周无能,在 Arduino-esp32 组件依赖 TinyUS ...
- 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
前言 .NET NativeAOT 想必不少开发者都已经很熟悉了,它可以将 .NET 程序集直接编译到原生的机器代码,从而可以脱离 VM 直接运行.简单的一句 dotnet publish -c Re ...
- 9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明
9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明 @ 目录 9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明 1. RabbitMQ 消息队列的 " ...
- IDEA构建Maven项目生成的文件说明(.mvn、mvnw、mvnw.cmd、.gitignore、.iml、.idea、pom.xml)
IDEA构建的maven+springBoot项目结构如下: 1..gitignore:分布式版本控制系统git的配置文件,意思为忽略提交 在 .gitingore 文件中,遵循相应的语法,即在每一行 ...
- 一文搞懂Dockerfile
Dockerfile官网 https://docs.docker.com/reference/dockerfile/ 什么是Dockerfile? Dockerfile 是一个文本文件,其内包含了一条 ...
- web自动化的元素定位
一.基础元素定位 1.id定位:根据元素的id定位 By.id("id") webDriver.findElement(By.id("tab-account") ...