当前位置:网站首页>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
边栏推荐
猜你喜欢

Tensorflow安装后ImportError: DLL load failed: 找不到指定的模块,且国内安装缓慢

可视化常见问题解决方案(八)共享绘图区域问题解决方案

电力行业巡检对讲通信系统

记录一个查询兼容性的网站,String.replaceAll()兼容性报错

记录阿里云服务器挖矿程序处理

pytorch:关于GradReverseLayer实现的一个坑

PC端一次启动多个微信

Jiangning hospital DMR system solution

How to improve the service efficiency of the hotel without blind spots and long endurance | public and Private Integrated walkie talkie?

manjaro安装与配置(vscode,微信,美化,输入法)
随机推荐
可视化之路(九)Arrow类详解
可视化常见问题解决方案(八)数学公式
JDBC连接池
自组网灵活补盲|北峰油气田勘测解决方案
PyTorch 9. optimizer
PyTorch 19. Differences and relations of similar operations in pytorch
Discussion on frame construction and technology selection of short video platform
PyTorch 18. torch. backends. cudnn
Intelligent communication solution of Hainan Phoenix Airport
可视化常见问题解决方案(八)共享绘图区域问题解决方案
安装tui-editor失败,快速解决方案
hql求一个范围内最大值
PyTorch 10. Learning rate
连接orcale
组合数求解与(扩展)卢卡斯定理
华为云MVP邮件
使用compressorjs压缩图片,优化功能,压缩所有格式的图片
电力行业巡检对讲通信系统
可视化常见问题解决方案(九)背景颜色问题
北峰通信助力湛江市消防支队构建PDT无线通信系统