BZOJ2301: [HAOI2011]Problem b
2301: [HAOI2011]Problem b
Time Limit: 50 Sec Memory Limit: 256 MB
Submit: 6435 Solved: 2986
[Submit][Status][Discuss]
Description
Input
第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k
Output
共n行,每行一个整数表示满足要求的数对(x,y)的个数
Sample Input
2 5 1 5 1
1 5 1 5 2
Sample Output
14
3
HINT
100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000
Source
【题解】
很巧的容斥。
给的询问a,b,c,d很难搞,考虑容斥!
有点像二维前缀和,即考虑x = 1...a/b,y = 1...c/d,答案为solve(b,d) - solve(b,c-1) - solve(a-1,d) + solve(a-1,c-10
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <queue> 7 #include <vector> 8 #define min(a, b) ((a) < (b) ? (a) : (b)) 9 #define max(a, b) ((a) > (b) ? (a) : (b)) 10 #define abs(a) ((a) < 0 ? (-1 * (a)) : (a)) 11 inline void swap(long long &a, long long &b) 12 { 13 long long tmp = a;a = b;b = tmp; 14 } 15 inline void read(long long &x) 16 { 17 x = 0;char ch = getchar(), c = ch; 18 while(ch < '0' || ch > '9') c = ch, ch = getchar(); 19 while(ch <= '9' && ch >= '0') x = x * 10 + ch - '0', ch = getchar(); 20 if(c == '-') x = -x; 21 } 22 23 const long long INF = 0x3f3f3f3f; 24 const long long MAXN = 100000; 25 26 long long miu[MAXN], bp[MAXN], p[MAXN], tot; 27 void make_miu() 28 { 29 miu[1] = 1; 30 for(register long long i = 2;i <= MAXN;++ i) 31 { 32 if(!bp[i]) p[++tot] = i, miu[i] = -1; 33 for(register long long j = 1;j <= tot && i * p[j] <= MAXN;++ j) 34 { 35 bp[i * p[j]] = 1; 36 if(i % p[j] == 0) 37 { 38 miu[i * p[j]] = 0; 39 break; 40 } 41 miu[i * p[j]] = -miu[i]; 42 } 43 } 44 for(register long long i = 1;i <= MAXN;++ i) miu[i] += miu[i - 1]; 45 } 46 47 long long a,b,c,d,k; 48 49 long long solve(long long n, long long m) 50 { 51 n/=k, m/=k; 52 if(n == 0 || m == 0) return 0; 53 long long tmp = min(n, m); 54 long long ans = 0, last; 55 for(register long long i = 1;i <= tmp;i = last + 1) 56 { 57 last = min(n/(n/i), m/(m/i)); 58 ans += (miu[last] - miu[i - 1]) * (n/i) * (m/i); 59 } 60 return ans; 61 } 62 63 long long n; 64 65 int main() 66 { 67 make_miu(); 68 read(n); 69 for(;n;-- n) 70 { 71 read(a), read(b), read(c), read(d), read(k); 72 printf("%lld\n", solve(b,d) - solve(a - 1,d) - solve(b,c - 1) + solve(a - 1,c - 1)); 73 } 74 return 0; 75 }
BZOJ2301
转载于:https://www.cnblogs.com/huibixiaoxing/p/8298385.html
BZOJ2301: [HAOI2011]Problem b相关推荐
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Submit: 4032 Solved: 1817 [Submi ...
- BZOJ2301:[HAOI2011]Problem b(莫比乌斯反演,容斥)
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- [bzoj2301][HAOI2011]Problem b
题目大意:给你$a,b,c,d,k(1\leqslant a,b,c,d,k\leqslant 5\times10^4)$,求$\displaystyle\sum\limits_{x=a}^b\dis ...
- bzoj2301: [HAOI2011]Problem b懵逼乌斯反演
属于结果的和好求但是结果不好求的题 (轻易能得到以k的倍数为最大公约数的对数,但是不好直接求k) 所以一波反演结束 其实反演的时候完全没有反演的感觉,就是不停地恒等变形 算是懵逼乌斯反演最简单的例题 ...
- BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- [bzoj2301] [HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- 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)函 ...
- [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演
1,[POI2007]ZAP-Queries ---题面--- 题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$ ...
- [HAOI2011]Problem c
链接 P2523 [HAOI2011]Problem c 想法还是很巧妙的. 其实只是问一个先后顺序,因为编号相同的话,那么\(id\)小的就在前面,\(id\)大的就在后面. 所以我们考虑的是到底有 ...
最新文章
- linux yum install 与 yum groupinstall 区别
- Vue指令之v-on的缩写和事件修饰符||.stop 和 .self 的区别
- 十七、深入Python异常处理
- ​知乎700万人围观:如何快速成为数据分析师?
- JAVA WEB开发环境搭建教程
- 一个同事做的基于yaas平台的一个应用,可以用来学习SAP yaas
- ora-00923数据类型不一致_小白学 Python(2):基础数据类型(上)
- 服务器时间维护制度,网络设备及服务器日常维护管理制度
- 安心加科技打造多维度全场景式安心加物联平台
- 工业智能相机与基于PC的机器视觉的区别比较
- 字符串匹配算法_4月16日活动预告|字符串匹配算法解析
- 在windows的某个文件夹下运行WSL中的docker容器
- 【nodejs原理源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
- 音视频开发(28)---流媒体并发量与宽带、码率计算详解
- bytebuf池_netty源码解析(4.0)-26 ByteBuf内存池:PoolArena-PoolSubpage
- Audio Hijack 4 for Mac(音频录制工具)
- python列表语法_python学习之列表语法
- 微信小程序商城模板平台分享
- 哈工大计算机系统实验三——二进制炸弹
- java表格边框问题_Java 设置Word表格边框