整理的算法模板合集: ACM模板


题目传送门



本题中数据为5e4,我们只需要筛一次5e4就行了。
双倍经验的P4450 双亲数中数据达到了1e6,我们直接筛1e6的莫比乌斯函数有点不可取,因为只有一组数据,所以我们直接筛一次min(a,b)min(a, b)min(a,b)即可。

写成公式:

f(k)=∑i=1a∑j=1b[gcd(i,j)=k]f(k)=\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)=k]f(k)=i=1∑a​j=1∑b​[gcd(i,j)=k]

易得F(n)F(n)F(n):

F(n)=∑n∣kf(k)F(n)=\sum_{n|k}f(k)F(n)=n∣k∑​f(k)

然后我们就需要找到一个求解F(n)F(n)F(n) 的方法即可。

然后我们就可以发现答案实际上就是:f(d)f(d)f(d)。

我们利用莫比乌斯反演的第二种形式:

f(d)=∑d∣kμ(⌊kd⌋)F(k)f(d)=\sum_{d|k}\mu(\lfloor\frac{k}{d}\rfloor)F(k)f(d)=d∣k∑​μ(⌊dk​⌋)F(k)

f(d)=∑d∣kμ(⌊kd⌋)⌊ak⌋⌊bk⌋f(d)=\sum_{d|k}\mu(\lfloor\frac{k}{d}\rfloor)\lfloor\frac{a}{k}\rfloor\lfloor\frac{b}{k}\rfloorf(d)=d∣k∑​μ(⌊dk​⌋)⌊ka​⌋⌊kb​⌋

枚举 ⌊kd⌋\lfloor\frac{k}{d}\rfloor⌊dk​⌋ 设为 ttt
f(d)=∑t=1min(a,b)μ(t)⌊atd⌋⌊btd⌋f(d)=\sum_{t=1}^{min(a,b)}\mu(t)\lfloor\frac{a}{td}\rfloor\lfloor\frac{b}{td}\rfloorf(d)=t=1∑min(a,b)​μ(t)⌊tda​⌋⌊tdb​⌋

时间复杂度为O(n)O(n)O(n)我们再利用整除分块将时间复杂度降到O(n)O(\sqrt{n})O(n​)。我们直接枚举 ttt,也就是说 lll 就是 ttt。

因为区间lll到rrr的值都相同,所以我们使用整除分块,利用前缀和直接求莫比乌斯函数这一段的和。

推完公式代码就非常简单了:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>using namespace std;
typedef long long ll;
const int N = 50007, M = 50007, INF = 0x3f3f3f3f;
const double eps = 1e-6;int n, m;
int vis[N];
int cnt, mu[N], prime[N];
int sum[N];void get_mu(int n)
{memset(vis, 0, sizeof vis);memset(mu, 0, sizeof mu);cnt = 0, mu[1] = 1;for(int i = 2; i <= n; ++ i){if(!vis[i]){prime[cnt ++ ] = i;mu[i] = -1;}for(int j = 0; j < cnt && prime[j] * i <= n; ++ j){vis[prime[j] * i] = true;if(i % prime[j] == 0)break;mu[i * prime[j]] = - mu[i];}}for(int i = 1; i <= n; ++ i){sum[i] = sum[i - 1] + mu[i];}
}int main()
{get_mu(5e4 + 7);scanf("%d", &n);while(n -- ){int a, b, d;ll ans = 0;scanf("%d%d%d", &a, &b, &d);
// l 从一定要1开始!从0开始的话就会 除0 直接RE
//要保证l <= min(a, b)因为一旦t大于a,就会除0(l就是枚举的t,t=k/d)for(int l = 1, r; l <= min(a, b); l = r + 1){r = min(a / (a / l), b / (b / l));ans += 1ll * (a / (l * d)) * (b / (l *d)) * (sum[r] - sum[l - 1]);}printf("%lld\n", ans);}
}

luogu P3455 [POI2007]ZAP-Queries (莫比乌斯反演 + 整除分块)相关推荐

  1. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

    Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...

  2. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块) 手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csd ...

  3. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

  4. Luogu P3455 [POI2007]ZAP-Queries

    由于之前做了Luogu P2257 YY的GCD,这里的做法就十分套路了. 建议先看上面一题的推导,这里的话就略去一些共性的地方了. 还是和之前一样设: \[f(d)=\sum_{i=1}^a \su ...

  5. P2522 HAOI2011 Problem b [莫比乌斯反演,数论分块]

    P2522 HAOI2011 题意 对于给出的n个询问,每次求有多少个数对(x,y)(x,y)(x,y),满足a≤x≤ba≤x≤ba≤x≤b,c≤y≤dc≤y≤dc≤y≤d,且gcd(x,y)=kgc ...

  6. HDU 6833 莫比乌斯反演 + 数论分块

    给定下列式子: ∑a1=1n∑a2=1n...∑ax=1n(∏j=1xajk)f(gcd⁡(a1,a2...,ax))⋅gcd⁡(a1,a2...,ax)\sum_{a_1=1}^n\sum_{a_2 ...

  7. 数论 —— 莫比乌斯反演

    [反演] 假设我们手头有个数列 F,通过某种变换 H,可以得到函数 G.,即: 但现在只有函数 G,需要求 F,那么我们就需要寻找一种变换 ,使得 G 在经过这种变换后能够获得 F,这个过程即为反演, ...

  8. 【专题】莫比乌斯反演

    问题引入: 给定整数 N 和 M.求满足  且  为质数的点对  的个数. 数据范围: 接下来会见到以下内容: 莫比乌斯函数 莫比乌斯函数的线性筛 迪利克雷卷积介绍 莫比乌斯反演 整除分块 杜教筛介绍 ...

  9. P2257 YY的GCD (莫比乌斯反演)

    [题目链接] https://www.luogu.org/problemnew/show/P2257 // luogu-judger-enable-o2 /* -------------------- ...

最新文章

  1. 【5】python核心编程 第八章-条件和循环
  2. php扩展-ioncube组件的安装方法_Windows系统PHPStudy Web环境安装ionCube扩展软件
  3. LeetCode 1049. 最后一块石头的重量 II
  4. 关于jasmine里debugElement.query和fixture.detectChanges的依赖关系
  5. urllib2.urlopen超时问题
  6. LeetCode之Two Sum
  7. 蓝桥杯基础模块4_3:矩阵按键
  8. Python 利用*args和**kwargs解决函数遇到不确定数量参数问题
  9. 2021-02-23 天地图图层类型总结
  10. python学习手册(1)
  11. PYQT5:基于QsciScintilla的代码编辑器分析10--语法高亮颜色选择
  12. 苹果电脑打不开网页连接不到服务器,苹果电脑chrome打不开网页怎么办_MAC上的chrome打不开网页如何解决-win7之家...
  13. Badboy录制提示脚本错误解决方案
  14. {*zoom:1;}作用
  15. 计算机上海交大考研有学硕吗,2021上海交大考研:学硕专硕的区别
  16. Latest - 2021 - 08 Giuhub Access
  17. tonybot 人形机器人 首次开机 0630
  18. ES 文件浏览器安全漏洞分析(CVE-2019-6447)
  19. A股行业投资指南——好的投资,首先是选好行业
  20. 佳能打印机复印身份证的双面到A4纸上的方法

热门文章

  1. 深度学习100问:什么是深监督(Deep Supervision)?
  2. 轻松学Pytorch – 年龄与性别预测
  3. 基础 | 深度学习与神经网络-介绍
  4. Python中的数据结构
  5. 浅谈RNN,LSTM和GRU
  6. sqoop数据迁移的应用
  7. MyGeneration学习笔记(1) : 使用MyGeneration生成存储过程和数据访问层代码
  8. windows 2012 exchange server 2013 搭建
  9. [转][android深入学习]android窗口管理机制
  10. 【python教程入门学习】Django应用开发框架的优点和缺点!!