分析:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。

然后对于求这样单个的gcd(x,y)=k的,我们通常采用莫比乌斯反演

但是,时间复杂度是O(n*(n/k))的,当复杂度很坏的时候,当k=1时,退化到O(n^2),超时

然后进行分块优化,时间复杂度是O(n*sqrt(n))

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<queue>
  4. #include<cstdlib>
  5. #include<algorithm>
  6. #include<vector>
  7. #include<cmath>
  8. using namespace std;
  9. typedef long long LL;
  10. const int N=5e4+;
  11. const int INF=0x3f3f3f3f;
  12. bool vis[N];
  13. int prime[N],mu[N],cnt;
  14. void getmu()
  15. {
  16. mu[] = ;
  17. for(int i=; i<=N-; i++)
  18. {
  19. if(!vis[i])
  20. {
  21. prime[++cnt] = i;
  22. mu[i] = -;
  23. }
  24. for(int j=; j<=cnt&&i*prime[j]<=N-; j++)
  25. {
  26. vis[i*prime[j]] = ;
  27. if(i%prime[j]) mu[i*prime[j]] = -mu[i];
  28. else
  29. {
  30. mu[i*prime[j]] = ;
  31. break;
  32. }
  33. }
  34. }
  35. }
  36. LL solve(int n,int m,int k){
  37. n/=k,m/=k;
  38. int l=min(n,m);
  39. LL ans=;
  40. for(int i=,j;i<=l;i=j+){
  41. j=min(n/(n/i),m/(m/i));
  42. ans+=1ll*(mu[j]-mu[i-])*(n/i)*(m/i);
  43. }
  44. return ans;
  45. }
  46. int main(){
  47. getmu();
  48. for(int i=;i<=N-;++i)mu[i]+=mu[i-];
  49. int T;
  50. scanf("%d",&T);
  51. while(T--){
  52. int a,b,c,d,k;
  53. scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
  54. printf("%lld\n",solve(b,d,k)-solve(b,c-,k)-solve(a-,d,k)+solve(a-,c-,k));
  55. }
  56. return ;
  57. }

BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演的更多相关文章

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

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

  2. [bzoj2301][HAOI2011]Problem B —— 莫比乌斯反演+容斥原理

    题意 给定a, b, c, d, k,求出: \[\sum_{i=a}^b\sum_{j=c}^d[gcd(i, j) = k]\] 题解 为方便表述,我们设 \[calc(\alpha, \beta ...

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

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

  4. [BZOJ1101&BZOJ2301][POI2007]Zap [HAOI2011]Problem b|莫比乌斯反演

    对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d. 我们可以令F[n]=使得n|(x,y)的数对(x,y)个数 这个很容易得到,只需要让x, ...

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

    题目 P2522 [HAOI2011]Problem b 解析: 具体推导过程同P3455 [POI2007]ZAP-Queries 不同的是,这个题求的是\(\sum_{i=a}^b\sum_{j= ...

  6. Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Description 对于给出的n个询问,每次求有多少个数对(x, ...

  7. BZOJ 2301: [HAOI2011]Problem b 莫比乌斯反演

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 1007  Solved: 415[Submit][ ...

  8. BZOJ.2301.[HAOI2011]Problem B(莫比乌斯反演 容斥)

    [Update] 我好像现在都看不懂我当时在写什么了=-= \(Description\) 求\(\sum_{i=a}^b\sum_{j=c}^d[(i,j)=k]\) \(Solution\) 首先 ...

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

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

随机推荐

  1. linux shell编程学习笔记(一)---通配符,元字符

    linux通配符: 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不 ...

  2. post提交与get提交的一个小知识点

    今天偶然发现post提交与get提交的一个小知识点,记下来以后可以看看. 将form表单的method的设置为get后,通过url传递的参数将不会被传递到服务器,例如1.ashx?a=123,的a=1 ...

  3. LPC17XX 数据手册摘要之系统时钟与功率控制

    系统时钟与功率控制 一.系统时钟 LPC17XX有三个独立的时钟振荡器,分别是主振荡器(MIAN_OSC).内部RC振荡器(IRC_OSC).实时时钟振荡器(RTC_OSC).LPC17XX时钟框图如 ...

  4. jquery.animate用法

    <!DOCTYPE html><html><head><script src="http://libs.baidu.com/jquery/1.10. ...

  5. ECMAScript 6十大特性

    ES6入门 http://es6.ruanyifeng.com/ ES6排名前十的最佳特性列表 Default Parameters(默认参数) in ES6 Template Literals (模 ...

  6. 三个PHP常用代码样例

    作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的.尽管PHP经常被人诟病,被人贬低,被人当玩笑开,事实证明,PHP是全世 ...

  7. 重学C语言 -- printf,scanf

     printf();    用来显示格式串的内容          注意: 参数不可以换行,否则会出一个警告.       格式串中占位符比表达式数量多     会显示一个无意义值 格式串中占位符比表 ...

  8. ECSHOP订单一键发货简化订单发货流程

    第一步: 在templates/order_info.htm文件找到: {if $operable_list.confirm}       <input name="confirm&q ...

  9. [数据库连接字符串] Access 连接字符串

    [数据库连接字符串] Access 连接字符串 //ODBC 标准安全策略 Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb ...

  10. sed线上经典案例之-同时替换多个字符串

    回答网友请教的一个问题:配置文件如下:[aaa]cfg1=aaaxxxx=bbbcfg2=ccccfg3=ddd[bbb]cfg1=eeeyyyy=fffcfg2=gggcfg3=hhhcfg4=ii ...