二次联通门 : BZOJ 2301: [HAOI2011]Problem b

/*BZOJ 2301: [HAOI2011]Problem b莫比乌斯反演 + 容斥将k除下来后就变为了一道原题后像求二维前缀和一样减去重复计算的,再加上多减的即可
*/
#include <cstdio>
#include <iostream>#define rg register
#define Max 50007
int p[Max], mu[Max], sm[Max]; bool is[Max];
typedef long long LL;
inline LL min (LL a, LL b) { return a < b ? a : b; }
inline void read (int &n)
{rg char c = getchar ();for (n = 0; !isdigit (c); c = getchar ());for (; isdigit (c); n = n * 10 + c - '0', c = getchar ());
}void Euler (int N)
{rg int i, j, k; int C = 0; mu[1] = 1;for (i = 2; i <= N; ++ i){if (!is[i]) p[++ C] = i, mu[i] = -1;for (j = 1; j <= C; ++ j){if ((k = i * p[j]) > N) break;is[k] = true;if (i % p[j] == 0) { mu[k] = 0; break; }else mu[k] = -mu[i];}}for (i = 1; i <= N; ++ i) mu[i] += mu[i - 1];
}
LL Z (LL N, LL M)
{LL res = 0; rg LL i, j;if (N > M) std :: swap (N, M);for (i = 1; i <= N; i = j + 1){j = min (N / (N / i), M / (M / i));res += (LL) (mu[j] - mu[i - 1]) * (N / i) * (M / i);}return res;
}
int main (int argc, char *argv[])
{int T, A, B, C, D, K; read (T); rg int i;Euler (Max - 1); LL Answer = 0;for (; T; -- T){read (A), read (B), read (C), read (D), read (K);A = (A - 1) / K, C = (C - 1) / K, B /= K, D /= K;Answer = Z (B, D) - Z (A, D) - Z (C, B) + Z (A, C);printf ("%lld\n", Answer);}return 0;
}

转载于:https://www.cnblogs.com/ZlycerQan/p/8073672.html

BZOJ 2301: [HAOI2011]Problem b相关推荐

  1. BZOJ 2301 [HAOI2011]Problem b

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

  2. 莫比乌斯反演(bzoj 2301: [HAOI2011]Problem b)

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

  3. bzoj 2302: [HAOI2011]Problem c(DP)

    2302: [HAOI2011]Problem c Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 937  Solved: 509 [Submit] ...

  4. BZOJ 2302 HAOI2011 Problem c 动态规划

    题目大意:给定nn个人和nn个位置,要求生成一个序列aia_i,然后第1...n1...n个人依次走到第a1...na_{1...n}个位置,如果那个位置已经有人了就走到下一个位置,直到找到一个空位, ...

  5. BZOJ 2301 Problem b

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

  6. BZOJ2301: [HAOI2011]Problem b

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

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

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

  8. 【BZOJ 2298】 2298: [HAOI2011]problem a (DP)

    2298: [HAOI2011]problem a Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1326  Solved: 637 Descrip ...

  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. 一键安装python3环境
  2. web 容器 支持 php,web服务器lighttpd 对php的支持
  3. java 操作系统 模拟 daima_求C/C++或java写的比较简单的操作系统的模拟程序
  4. DC课程笔记-数字逻辑综合工具-DC Environment Attributes
  5. Redis进阶-如何从海量的 key 中找出特定的key列表 Scan详解
  6. 我要重构“软件行业”......
  7. 洛谷P2734 游戏 A Game
  8. 爬虫-request和BeautifulSoup模块
  9. wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
  10. FPGA数字信号处理(十七)多级CIC滤波器Verilog设计
  11. bootcamp空间不足_Bootcamp安装WinXP补丁时C盘空间不足怎么办?教程一览
  12. 视频编解码硬件加速器分类
  13. java 中的连接超时_【java中处理http连接超时的方法】
  14. R语言入门——猜数小游戏
  15. 阿里的数据分析技术有多强?从优酷的大数据架构中,我学到了这些
  16. 共享和资源共享的区别
  17. 电脑老是自动安装流氓软件的解决办法(详解)
  18. EAS 销售出库单上的部门 显示规则
  19. SAE J2534协议 车辆诊断编程接口
  20. 数据结构与算法应用(软件设计师备考笔记)

热门文章

  1. 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。
  2. C#引用office库
  3. (推荐)为什么要走嵌入式?
  4. android 进程间的通信,Android native进程间通信实例-binder结合共享内存
  5. 摸透 Redis 主从复制、哨兵、Cluster 三种模式
  6. 记录之关于tensoflow中使用Adam优化算法导致模型保存时参数的变化的记录
  7. (问题)c语言现代方法2th,自己编写的reminder.c程序 找错/修改/拓展延伸
  8. Ubuntu apt 卸载详解
  9. linux rm 不释放_linux删除文件空间不释放问题解决
  10. oracle强大的包,ORACLE 程序包