题面

传送门:洛咕


Solution

我怎么只会刷水题

这题的双倍经验题,不多说啥了。

啥?范围不一样?
那根据我们写数位DP及二维前缀和的经验,我们容斥一下......

然后就没有然后了。
时间复杂度\(O(m*\sqrt n)\)


Code

人傻自带大常数,不开O2 T一个点
事实上这题可以把一些不必要的\(longlong\)改成\(int\),刚好能过。可惜我太颓,不想改了

//Luogu P2522 [HAOI2011]Problem b
//Jan,23rd,2019
//莫比乌斯函数双倍经验题
#include<iostream>
#include<cstdio>
using namespace std;
long long read()
{long long x=0,f=1; char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-'0';c=getchar();}return x*f;
}
const int N=50000+1000;
const int M=50000;
int prime[N],p_cnt,mu[N];
bool noPrime[M];
void GetPrime(int n)
{noPrime[1]=true,mu[1]=1;for(int i=2;i<=n;i++){if(noPrime[i]==false)prime[++p_cnt]=i,mu[i]=-1;for(int j=1;j<=p_cnt and i*prime[j]<=n;j++){noPrime[i*prime[j]]=true;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}mu[i*prime[j]]=mu[i]*mu[prime[j]];}}
}
long long pre_mu[N];
long long GetAns(long long n,long long m,int K)
{long long t_ans=0;if(n>m) swap(n,m);n/=K,m/=K;for(int l=1,r;l<=n;l=r+1){r=min(n/(n/l),m/(m/l));t_ans+=(pre_mu[r]-pre_mu[l-1])*(n/l)*(m/l);}return t_ans;
}
int main()
{GetPrime(M);for(int i=1;i<=M;i++)pre_mu[i]=pre_mu[i-1]+mu[i];int T=read();for(;T>0;T--){long long a=read(),b=read(),c=read(),d=read(),K=read();long long ans=GetAns(b,d,K)-GetAns(a-1,d,K)-GetAns(b,c-1,K)+GetAns(a-1,c-1,K);printf("%lld\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/GoldenPotato/p/10307240.html

[Luogu P2522] [HAOI2011]Problem b (莫比乌斯反演)相关推荐

  1. 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 ...

  2. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 4032  Solved: 1817 [Submi ...

  3. [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演

    1,[POI2007]ZAP-Queries ---题面--- 题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$ ...

  4. BZOJ2301:[HAOI2011]Problem b(莫比乌斯反演,容斥)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  5. BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  6. P2522 [HAOI2011]Problem b (莫比乌斯反演)

    P2522 [HAOI2011]Problem b 题意: n个询问,在 a ≤ x ≤ b , c ≤ y ≤ d a\le x\le b, c \le y \le d a≤x≤b,c≤y≤d范围内 ...

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

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

  8. P2522 [HAOI2011]Problem b

    P2522 [HAOI2011]Problem b 题意: 对于给出的 n 个询问,每次求有多少个数对 (x,y),满足 a≤x≤b,c≤y≤d,且 gcd(x,y)=k,gcd(x,y) 函数为 x ...

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

    URL: (Luogu)https://www.luogu.org/problem/show?pid=3455 (BZOJ)http://www.lydsy.com/JudgeOnline/probl ...

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

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

最新文章

  1. MATLAB应用实战系列(七十七)-【图像处理】COVID-19 防疫应用口罩检测
  2. 冀教版五年级计算机教学计划,冀教版五年级科学教学计划
  3. boost::hana::not_用法的测试程序
  4. js 绘制泳道图_软件工程师,如何绘制业务架构图 — 4.流程图
  5. java加密 c解密_java+加密解密
  6. windows下,linux下elasticsearch安装插件head插件的步骤
  7. STM8单片机低功耗---停机(Halt)模式实现
  8. Linux工作笔记035---linux内网测试访问外网网速_外网测试访问内网网速
  9. java递归方法建立搜索二叉树,具备查找关键字,插入新节点功能
  10. LINUX:lpr不能打印,可以试试lp
  11. WindowsXP自带小工具(转)
  12. 最简单的P2P加密聊天软件开发完成
  13. Eclipse中,使用Darkest主题,static方法在main中不是斜体的解决办法
  14. K-means算法(知识点梳理)
  15. 儿童专注力训练——虚线描成实现
  16. 从零开始设计一个共识算法——一场没有硝烟的战争
  17. Dango-之多对多关系—基于双下划线的查询
  18. (修改完善)SpringBoot+Mybatis-Plus使用webSocket实现一对一聊天
  19. 十四.ARM裸机学习之iNand详解
  20. play框架,即学即用

热门文章

  1. arraylist长度_面经手册 第7篇ArrayList也这么多知识?一个指定位置插入就把谢飞机面晕了!...
  2. poi 读取word标题_【转载】poi读取word文档
  3. maya前台渲染_maya前台渲染MEL
  4. python闭包函数的必要条件_Python闭包函数
  5. php对接海康视频教程_手把手教你php对接海康api
  6. python机器学习生物信息学
  7. OpenCV(二)---朴素贝叶斯分类器 NormalBayesClassifier
  8. 教育部计算机考研大纲,2021考研计算机大纲计算机组成原理部分考查内容
  9. 著名线性代数教授 85岁麻省理工学院教授,给2020本科生教授《线性代数入门》
  10. java 任务链模式,flink部署运行架构