【BZOJ】2820: YY的GCD
【题意】给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对。T<=10^4,N,M<=10^7。
【算法】数论(莫比乌斯反演)
【题解】公式推导见DQSSS。
推到ans= Σp是素数 Σd≤mins μ(d) * (n/pd) * (m/pd),mins=min(n/p,m/p)。
使用枚举取值的方法再枚举素数单次询问复杂度√n*(n/ln n),显然不能满足要求。
问题在于枚举素数,令T=pd,则:
ans= ΣT≤mins (n/T) * (m/T)*Σp|T&&p是素数 μ(T/p),mins=min(n,m)。
后面部分可以枚举素数的倍数预处理出μ前缀和,复杂度O((n/ln n)*ln n)即O(n)。
每次询问再枚举取值O(√n)解决。
总复杂度O(T*√n+n)。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,N=;
int miu[maxn],mius[maxn],prime[maxn],tot;
ll s[maxn];
bool mark[maxn];
void pre(){
miu[]=;
for(int i=;i<=N;i++){
if(!mark[i])miu[prime[++tot]=i]=-;
for(int j=;j<=tot&&i*prime[j]<=N;j++){
mark[i*prime[j]]=;
if(i%prime[j]==)break;
miu[i*prime[j]]=-miu[i];
}
}
for(int i=;i<=tot;i++){
for(int j=prime[i];j<=N;j+=prime[i])mius[j]+=miu[j/prime[i]];
}
for(int i=;i<=N;i++)s[i]=s[i-]+mius[i];
}
int main(){
pre();
int T,n,m;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
int pos=,mins=min(n,m);ll ans=;
for(int i=;i<=mins;i=pos+){
pos=min(n/(n/i),m/(m/i));
ans+=(s[pos]-s[i-])*(n/i)*(m/i);
}
printf("%lld\n",ans);
}
return ;
}
将枚举两个数改为枚举乘积和其中一个,即T和p|T,后面的p|T可以O(n log n)贡献处理前缀和。
【BZOJ】2820: YY的GCD的更多相关文章
- 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)
首先我们来看一道题 BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...
- [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)
[BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...
- BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ...
- 【刷题】BZOJ 2820 YY的GCD
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种傻×必然 ...
- Bzoj 2820: YY的GCD(莫比乌斯反演+除法分块)
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...
- bzoj 2820 YY的GCD 莫比乌斯反演
题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- BZOJ 2820 YY的GCD(莫比乌斯函数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2820 题意:给定n,m.求1<=x<=n, 1<=y<=m且Gc ...
- bzoj 2820 YY的GCD(莫比乌斯反演)
Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻× ...
- ●BZOJ 2820 YY的GCD
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2820 题解: 莫比乌斯反演 先看看这个题:HDU 1695 GCD(本题简化版) HDU 1 ...
随机推荐
- DB2的编目
D在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说 ...
- jdbc 2.0
1.Statement接口不能接受参数 2.PreparedStatement接口在运行时接受输入参数 3.CallableStatement接口也可以接受运行时输入参数,当想要访问数据库存储过程时使 ...
- Qt多线程-QtConcurrent并行运算高级API
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt多线程-QtConcurrent并行运算高级API 本文地址:http://tec ...
- DNS原理及解析过程
本文主要参考自:http://369369.blog.51cto.com/319630/812889 并做了小幅修改 什么是DNS? 因特网上的主机和人类一样,也可以使用多种方式进行识别.主机的一种识 ...
- Vue使用,异步获取日期时间后格式成"/Date(1333245600000+0800)/" 转换成正常格式
js从后台mvc中日期获取,结果格式成"/Date(1333245600000+0800)/"了,当然不能这样展显给用户了,要转换,方法如下: function data_stri ...
- LBP纹理特征[转自]
LBP方法(Local binary patterns)是一个计算机视觉中用于图像特征分类的一个方法.LBP方法在1994年首先由T. Ojala, M.Pietikäinen, 和 D. Harwo ...
- noip模拟题《序》sort
[问题背景] zhx 给他的妹子们排序.[问题描述] zhx有N个妹子,他对第i个妹子的好感度为ai, 且所有ai两两不相等.现在N个妹子随意站成一 排,他要将她们根据好感度从小到 ...
- 插件-监控页面加载之loading
查看效果点https://icedjuice.github.io/plug-in/loading/loading.html 简单易用的loading插件,该插件并不是真正的监控页面的资源加载过程,而是 ...
- 【明哥报错簿】tomcat 安装时出现 Failed to install Tomcat7 service
安装tomcat时提示 Failed to install Tomcat7 service 应该是卸载时直接删除目录导致的. Failed to install Tomcat7 service Che ...
- DNA Sequence POJ - 2778 (ac自动机 + 快速幂)
题意: 给出患病的DNA序列,问序列长度为n的,且不包含患病的DNA序列有多少种 解析: 以给出的患病DNA序列建trie树 患病结点要用flag标记 对于长度为n的序列 位置i有四种 情况A C ...