当前位置:网站首页>Dirichlet 前缀和(数论优化式子复杂度利器)
Dirichlet 前缀和(数论优化式子复杂度利器)
2022-04-23 06:21:00 【Zimba_】
概述
当式子优化到 ∑ d = 1 n ∑ d ∣ i s ( i ) \sum_{d=1}^{n}\sum_{d|i}s(i) ∑d=1n∑d∣is(i)类似形式时,我们可以 o ( n l o g n ) o(nlogn) o(nlogn)做。但是当 n n n取 1 0 7 10^7 107时就十分危险了,直到今天发现了这么个东西——Dirichlet 前缀和。它可以在 o ( n l o g l o g n ) o(nloglogn) o(nloglogn)的复杂度内解决这个问题,快近似 o ( n ) o(n) o(n)了。
这篇博客用来记板子,要学可以看这篇博客。
Dirichlet 前缀和
式子:(给定 a a a,求 b b b)
b [ d ] = ∑ i ∣ d a [ i ] b[d]=\sum_{i|d}a[i] b[d]=i∣d∑a[i]
代码:
for(int i=0;i<tot&&prime[i]<=n;i++)
{
for(int j=1;j*prime[i]<=n;j++)
{
a[j*prime[i]]+=a[j];
}
}
Dirichlet 后缀和
式子:(给定 a a a,求 b b b)
b [ d ] = ∑ d ∣ i a [ i ] b[d]=\sum_{d|i}a[i] b[d]=d∣i∑a[i]
代码:
for(int i=0;i<tot&&prime[i]<=n;i++)
{
for(int j=n/prime[i];j;j--)
{
a[j]+=a[j*prime[i]];
}
}
倒推Dirichlet 前缀和
式子:(给定 b b b,求 a a a)
b [ d ] = ∑ i ∣ d a [ i ] b[d]=\sum_{i|d}a[i] b[d]=i∣d∑a[i]
代码:
for(int i=tot-1;i>=0;i--)
{
for(int j=n/prime[i];j;j--)
{
a[j*prime[i]]-=a[j];
}
}
倒推Dirichlet 后缀和
式子:(给定 b b b,求 a a a)
b [ d ] = ∑ d ∣ i a [ i ] b[d]=\sum_{d|i}a[i] b[d]=d∣i∑a[i]
代码:
for(int i=tot-1;i>=0;i--)
{
for(int j=1;j*prime[i]<=n;++j)
{
a[j]-=a[j*prime[i]];
}
}
附录(配套素数筛)
代码:
int notPrime[MAXN],prime[MAXN],tot;
void getPrime(int n)
{
notPrime[1]=1;
for(int i=2;i<=n;i++)
{
if(!notPrime[i])prime[tot++]=i;
for(int j=0;j<tot&&i*prime[j]<=n;j++)
{
notPrime[i*prime[j]]=1;
if(i%prime[j]==0)break;
}
}
}
版权声明
本文为[Zimba_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43785386/article/details/112845979
边栏推荐
- 两个线程交互打印奇偶数字
- 数据分析学习(一)数据分析和Numpy基础
- manjaro安装与配置(vscode,微信,美化,输入法)
- el-select 中v-model绑定值,数据回显只显示value,不显示label
- PyTorch 19. Differences and relations of similar operations in pytorch
- Meishe technology launches professional video editing solution for desktop -- Meiying PC version
- 记录一些npm 有关的问题(杂乱记录)
- HuggingFace
- go语言数组操作
- vim+ctags+cscpope开发环境搭建指南
猜你喜欢
随机推荐
Solution of emergency communication system for major security incidents
可视化常见绘图(五)散点图
P1390 公约数的和(莫比乌斯反演)
VIM使用
可视化常见问题解决方案(八)共享绘图区域问题解决方案
The difference between null and undefined
浅谈BFC(块格式化上下文)
van-uploader上传图片实现过程、使用原生input实现上传图片
菜菜的并发编程笔记 |(五)线程安全问题以及Lock解决方案
P2257 YY的GCD(莫比乌斯反演)
城市应急管理|城市突发事故应急通信指挥调度系统
启动mqbroker.cmd失败解决方法
hql求一个范围内最大值
Object.create()原理,Object.create()规范,手写Object.create(),Object.create()用法
PyTorch 12. Hook usage
商业版阿里MQ普通消息发送订阅Demo
[COCI]Lampice (二分+树分治+字符串哈希)
字节数仓实习生面试sql题
go iris框架实现多服务Demo:通过(监听8083端口的)服务1中的接口启动(监听8084端口的)服务2
How to improve the service efficiency of the hotel without blind spots and long endurance | public and Private Integrated walkie talkie?