题目地址

http://acm.hdu.edu.cn/showproblem.php?pid=6715

题解

还是不会这题的容斥做法qwq。hjw当场写了个容斥A了。我推了个莫反,但是没反应过来我的式子能\(n\log n\)暴力算...
\[ \begin{aligned} &\sum_i \sum_j \mu(\frac{ij}{(i,j)})\\ &=\sum_{d} \sum_i \sum_j \mu(\frac{i}{d}) \mu(\frac{j}{d}) \mu(d) [(i,j)=d]\\ &=\sum_{d}\mu(d)\sum_i^{\frac{n}{d}} \sum_j ^\frac{m}{d} \mu(id)\mu(jd)[(i,j)=1]\\ &=\sum_{d}\mu(d)\sum_i^{\frac{n}{d}} \sum_j ^\frac{m}{d} \mu(id)\mu(jd)\sum_{k|(i,j)}\mu(k)\\ &=\sum_{d}\mu(d)\sum_{k=1}^{\frac{n}{d}} \mu(k)\sum_i^{\frac{n}{kd}} \sum_j ^\frac{m}{kd} \mu(kdi)\mu(kdj)\\ &设T=kd\\ &=\sum_T \left( \sum_{i} ^ {\frac{n}{T}} \mu(iT) \right) \left( \sum_{j} ^ {\frac{m}{T}} \mu(jT) \right)\sum_{d|T} \mu(d)\mu(\frac{T}{d}) \end{aligned} \]
第一步就是利用了\(\mu\)是个积性函数的性质,\(i\)和\(j\)除掉\((i,j)\)后显然互质,然后再乘上\((i,j)\)即可得到\(\mu(\frac{ij}{(i,j)})\)了。
然后第二步是乘上了\(\mu^2 (d)\)(当\(d\)无平方因子时,\(\mu^2 (d)=1\),当有平方因子时本身这一项也是\(0\)),所以可以直接乘上\(\mu^2 (d)\)而不会对式子造成影响。
最后式子三个东西全都能\(n \log n\)埃筛筛出来...总复杂度\(O(T n \log n)\)
开了long long所以可能跑的比较慢...看起来是不用开的

#include <bits/stdc++.h>
using namespace std;namespace io {
char buf[1<<21], *p1 = buf, *p2 = buf, buf1[1<<21];
inline char gc() {if(p1 != p2) return *p1++;p1 = buf;p2 = p1 + fread(buf, 1, 1 << 21, stdin);return p1 == p2 ? EOF : *p1++;
}
#define G gc#ifndef ONLINE_JUDGE
#undef G
#define G getchar
#endiftemplate<class I>
inline void read(I &x) {x = 0; I f = 1; char c = G();while(c < '0' || c > '9') {if(c == '-') f = -1; c = G(); }while(c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = G(); }x *= f;
}template<class I>
inline void write(I x) {if(x == 0) {putchar('0'); return;}I tmp = x > 0 ? x : -x;if(x < 0) putchar('-');int cnt = 0;while(tmp > 0) {buf1[cnt++] = tmp % 10 + '0';tmp /= 10;}while(cnt > 0) putchar(buf1[--cnt]);
}#define in(x) read(x)
#define outn(x) write(x), putchar('\n')
#define out(x) write(x), putchar(' ')} using namespace io;#define ll long long
const int N = 1000010;int T, n, m;
int p[N], cnt, vis[N];
ll mu[N], S1[N], S2[N], S3[N];void init() {mu[1] = 1;for(int i = 2; i < N; ++i) {if(!vis[i]) p[++cnt] = i, mu[i] = -1;for(int j = 1; j <= cnt && i * p[j] < N; ++j) {vis[i * p[j]] = 1;if(i % p[j] == 0) {mu[i * p[j]] = 0;break;}mu[i * p[j]] = -mu[i];}}for(int i = 1; i < N; ++i) {for(int j = i; j < N; j += i) {S3[j] += mu[i] * mu[j / i];}}
}int main() {init(); read(T);while(T--) {read(n); read(m);for(int i = 1; i <= max(n, m); ++i) S1[i] = S2[i] = 0;if(n > m) swap(n, m);for(int i = 1; i <= n; ++i) for(int j = i; j <= n; j += i) S1[i] += mu[j];for(int i = 1; i <= m; ++i) for(int j = i; j <= m; j += i) S2[i] += mu[j];ll ans = 0;for(int i = 1; i <= n; ++i) {ans += S1[i] * S2[i] * S3[i];}outn(ans);}
}  

转载于:https://www.cnblogs.com/henry-1202/p/11407375.html

hdu6715 算术 2019百度之星初赛3-1003相关推荐

  1. 2019百度之星初赛-1

    Q1,比最高项,都非零的话,约分即可 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ...

  2. 2019百度之星初赛1

    太菜了,只做对了第一题,然而第一题还做了40分钟,大佬只需2分钟 我原来把数据的顺序看反了,他是先输入个位再十位,我先十位再个位了 A Polynomial 水题,学过高数就会,就是取极限 传送门 反 ...

  3. 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换

    题目传送门 1 /* 2 二分搜索:在0-1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c 3 比赛时以为是贪心,榨干智商也 ...

  4. 2016百度之星 - 初赛(Astar Round2B)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B)  Prob ...

  5. 2015百度之星初赛(1)1006 旋转卡壳

    矩形面积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. 2021百度之星初赛二(1001 -- 1003)

    2021百度之星初赛二(1001 – 1003) 1001 题意: 给 a,b,每次 a,b会变为 a+b,a-b,问 k 次之后变成了哪两个数,对 998244353998244353 取模,多组数 ...

  7. 2016百度之星 - 初赛(Astar Round2A)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" ...

  8. 2021百度之星初赛第一场部分题解

    写在前面 几个家长要求我写一些2021百度之星初赛第一场的题解. 1003 鸽子 原题链接 https://acm.hdu.edu.cn/showproblem.php?pid=6998 http:/ ...

  9. 2011百度之星初赛B圆环

    这是百度之星2011初赛B中的第一道题,题目也很水,只要找到解题思路就OK了.. 题目: 时间限制:1000ms 描述 一个圆环上有n个位置,这n个位置按顺时针依次标号为1, 2, -, n.初始时圆 ...

  10. 百度之星初赛(1)解题报告

    超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

最新文章

  1. python-全栈开发-前方高能-内置函数
  2. hdu 1861-游船出租
  3. 使用C#体验函数式编程之——Currying(柯里化)
  4. linux磁盘写保护怎么修改_mount: /dev/vdb 写保护,将以只读方式挂载
  5. 使用bootstrap-table插件
  6. MATLAB(五)在线性代数中的应用
  7. react更改路由入参_JavaScript基础教程 react router路由传参
  8. 动态规划——最大上升子序列(hdu1087)
  9. Vue3学习笔记- NPM包管理工具
  10. winform的picturebox如何设置背景颜色为无背景颜色
  11. 【JVM】上帝视角看JVM内存模型,分而治之论各模块详情
  12. Google Earth Engine(GEE)——使用在线的世界矢量边界作为研究区(国家和洲际),如何调用?
  13. 2000G视频资料送带资源账号
  14. 新知实验室 TRTC在线上教育场景中的一种应用实践
  15. linux在文件末尾追加字符串,Linux中通过Shell对文件中指定行进行增加、删除、追加、替换...
  16. nginx源码分析--master和worker进程模型
  17. Python爬虫实例--新浪热搜榜[xpath语法]
  18. 设计模式之 Vistor 访问者模式:Swift 实现
  19. 追根溯源之最好的Spring AOP解析
  20. docker镜像加速,docker更换为国内镜像

热门文章

  1. 拓端tecdat|r语言聚类分析:k-means和层次聚类
  2. LeetCode4 寻找两个正序数组的中位数
  3. L2-006 树的遍历 (25 point(s))
  4. pytorch中保存和加载模型
  5. 2-9 装箱问题 (20 分)
  6. 计算机 管理 被停用,如果电脑上出现“你的账户已被停用请向系统管理员咨询”怎么办?...
  7. java实现一个简单的打字游戏
  8. jupyterlab中使用conda虚拟环境
  9. 基于移动最小二乘的图像变形
  10. python基于OpenCV模块实现视频流数据切割为图像帧数据