今天才知道莫比乌斯反演还可以这样:$$F(n)=\sum_{n|d}f(d) \Rightarrow f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$$我好弱,,,对于$$F(i)=\left \lfloor \frac{n}{i} \right \rfloor\left \lfloor \frac{m}{i} \right \rfloor$$反演后$$f(i)=\sum_{i|d}\mu(\frac{d}{i})F(d)=\sum_{i|d}\mu(\frac{d}{i})\left \lfloor \frac{n}{i} \right \rfloor\left \lfloor \frac{m}{i} \right \rfloor$$因为$\left \lfloor \frac{n}{i} \right \rfloor\left \lfloor \frac{m}{i} \right \rfloor$的取值是$O(2(\sqrt{n}+\sqrt{m})$的,所以除法枚举这些取值再乘上区间内的$\mu$值就可以做到$O(n\sqrt{n})$时间内解决所有询问,区间内的$\mu$值用前缀和相减就可以了

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define read(x) x=getint()
  5. using namespace std;
  6. const int N = 50000;
  7. int getint() {
  8. int k = 0, fh = 1; char c = getchar();
  9. for(; c < '0' || c > '9'; c = getchar())
  10. if (c == '-') fh = -1;
  11. for(; c >= '0' && c <= '9'; c = getchar())
  12. k = k * 10 + c - '0';
  13. return k * fh;
  14. }
  15. bool check[N + 3];
  16. int prime[N + 3], mu[N + 3], sum[N + 3];
  17. void shai() {
  18. memset(check, 0, sizeof(check));
  19. sum[1] = 1; mu[1] = 1; int num = 0;
  20. for(int i = 2; i <= N; ++i) {
  21. if (!check[i]) {
  22. prime[++num] = i;
  23. mu[i] = -1;
  24. }
  25. for(int j = 1; j <= num; ++j) {
  26. if (i * prime[j] > N) break;
  27. check[i * prime[j]] = 1;
  28. if (i % prime[j] == 0) {mu[i * prime[j]] = 0; break;}
  29. else mu[i * prime[j]] = - mu[i];
  30. }
  31. sum[i] = sum[i - 1] + mu[i];
  32. }
  33. }
  34. long long Q(int n, int m) {
  35. if (n > m) swap(n, m);
  36. long long ret = 0;
  37. for(int i = 1, la = 0; i <= n; i = la + 1) {
  38. la = min(n / (n / i), m / (m / i));
  39. ret += (long long) (sum[la] - sum[i - 1]) * (n / i) * (m / i);
  40. }
  41. return ret;
  42. }
  43. int main() {
  44. shai();
  45. int a, b, c, d, k, T;
  46. long long QQ;
  47. read(T);
  48. while (T--) {
  49. read(a); read(b); read(c); read(d); read(k);
  50. QQ = Q(b / k, d / k) - Q((a - 1) / k, d / k) - Q(b / k, (c - 1) / k) + Q((a - 1) / k, (c - 1) / k);
  51. printf("%lld\n", QQ);
  52. }
  53. return 0;
  54. }

233

【BZOJ 2301】【HAOI 2011】Problem b的更多相关文章

  1. 【BZOJ 2301】[HAOI2011]Problem b

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

  2. 【BZOJ】2301: [HAOI2011]Problem b(莫比乌斯+分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 和这题不是差不多的嘛--[BZOJ]1101: [POI2007]Zap(莫比乌斯+分块) 唯 ...

  3. 【BZOJ】【2301】problem b

    莫比乌斯反演/容斥原理 Orz PoPoQQQ PoPoQQQ莫比乌斯函数讲义第一题. for(i=1;i<=n;i=last+1){ last=min(n/(n/i),m/(m/i)); …… ...

  4. 【莫比乌斯反演】关于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( ...

  5. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  6. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  7. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  8. 【BZOJ】【2084】【POI2010】Antisymmetry

    Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不 ...

  9. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

随机推荐

  1. 用802.11n 加速,将android手机屏幕投影到win7电脑上

    在做Android应用开发的时候,经常需要将已经完成的应用展示给一同开发的小伙伴,然而一直感觉没有找到一种十分方便的办法.特别是看到了开发IOS的小伙伴在做展示的时候的方便.因为Apple既做PC,也 ...

  2. Python的高级特性8:你真的了解类,对象,实例,方法吗

    Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...

  3. poj 3255 Roadblocks

    Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13216 Accepted: 4660 Descripti ...

  4. 通过ssh tunnel连接内网ECS和RDS

    通过ssh tunnel连接内网ECS和RDS 这里讲了ssh tunnel的原理.很清晰. 此后又给外网访问内网增加了一种思路.感觉特别棒. 拓宽了思路:

  5. codevs1842 递归第一次

    难度等级:白银 1842 递归第一次 题目描述 Description 同学们在做题时常遇到这种函数 f(x)=5 (x>=0) f(x)=f(x+1)+f(x+2)+1 (x<0) 下面 ...

  6. K-means算法及文本聚类实践

    K-Means是常用的聚类算法,与其他聚类算法相比,其时间复杂度低,聚类的效果也还不错,这里简单介绍一下k-means算法,下图是一个手写体数据集聚类的结果. 基本思想 k-means算法需要事先指定 ...

  7. 用Map-Reduce的思维处理数据

    在很多人的眼里,Map-Reduce等于Hadoop,没有Hadoop谈Map-Reduce犹如自上谈兵,实则不然,Map-Reduce是一种计算模型,只是非常适合在并行的环境下运行,Hadoop是M ...

  8. WPF 绑定枚举值

    前台Xaml <ComboBox x:Name=" HorizontalAlignment="Left" Margin="5 0 0 0" Se ...

  9. 初学git:用git bash往github push代码

    对于我来说,最开始使用github主要是为了使用它的pages功能展示demo.其实这些都是用Github for Windows push上去的,图形化界面的客户端使用确实简单,但是逼格不够,好吧其 ...

  10. 完整的社交app源码android+laravel

    等想到写点什么的时候再写吧,其他看代码. https://github.com/huijimuhe/monolog-android https://github.com/huijimuhe/monol ...