BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演,分块,容斥)
来源:互联网 发布:考勤系统数据库设计 编辑:程序博客网 时间:2024/05/26 17:45
题目链接
题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。
和HDU1695基本是类似的,这道题如果还是使用之前的方法计算
比如N=16,当
那么函数
那么
这样u函数用前缀和维护,这段就
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define ll long long#define pb push_back#define gcd __gcdconst double EPS = 1e-8;const int maxn = 1e5+1000;const int inf = 0x3f3f3f3f;const double PI = acos(-1.0);bool check[maxn];int prime[maxn];int mu[maxn];void Moblus(){ cl(check,false); mu[1]=1;int tot=0; for(int i=2;i<maxn;i++){ if(!check[i]){ prime[tot++]=i; mu[i]=-1; } for(int j=0;j<tot;j++){ if(i*prime[j]>maxn)break; check[i*prime[j]]=true; if(i%prime[j]==0){ mu[i*prime[j]]=0;break; } else mu[i*prime[j]]=-mu[i]; } }}int k;/*//TLE 代码ll cal(int n,int m){ n/=k;m/=k; if(n>m)swap(n,m); ll ans=0; for(int i=1;i<=n;i++)ans+=(ll)mu[i]*(n/i)*(m/i); return ans;}*/ll sum[maxn];//分块优化 N/x值的种类个数不大于2*sqrt(N)ll cal(int n,int m){ n/=k;m/=k; if(n>m)swap(n,m); ll ans=0; for(int i=1,last=0;i<=n;i=last+1){ last=min(n/(n/i),m/(m/i));//计算当前i能往右边扩的位置,比如N=16,i=6,那么就能扩到8的位置 ans+=(sum[last]-sum[i-1])*(n/i)*(m/i); } return ans;}int main(){ int T;scanf("%d",&T); Moblus(); sum[0]=0;for(int i=1;i<maxn;i++)sum[i]=sum[i-1]+mu[i]; while(T--){ int a,b,c,d; scanf("%d%d%d%d%d",&a,&b,&c,&d,&k); printf("%lld\n",cal(b,d)-cal(a-1,d)-cal(c-1,b)+cal(a-1,c-1));//容斥原理 } return 0;}
0 0
- BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演 + 容斥原理 + 分块优化)
- BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演,分块,容斥)
- BZOJ 2301 [HAOI2011]Problem b (容斥+莫比乌斯反演+分块优化 详解)
- BZOJ 2301 HAOI2011 Problem b 容斥原理+莫比乌斯反演
- BZOJ 2301: [HAOI2011]Problem b(容斥原理+莫比乌斯反演)
- BZOJ 2301: [HAOI2011]Problem b 容斥+莫比乌斯反演
- [BZOJ 2301][HAOI2011]Problem b:莫比乌斯反演+容斥
- BZOJ 2301 Problem b (莫比乌斯反演+区间容斥+分块)
- [莫比乌斯反演+容斥+分块求和] BZOJ2301: [HAOI2011]Problem b
- Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)
- [BZOJ 2301] Problem b【莫比乌斯反演/容斥原理/分块】
- [BZOJ 2301][HAOI2011] Problem b 莫比乌斯反演
- bzoj 2301: [HAOI2011]Problem b 【莫比乌斯反演】
- BZOJ 2301: [HAOI2011]Problem b - 莫比乌斯反演
- [莫比乌斯反演] BZOJ 2301 [HAOI2011]Problem b
- BZOJ 2301: [HAOI2011]Problem b【莫比乌斯反演
- bzoj 2301: [HAOI2011]Problem b 莫比乌斯反演
- bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演)
- java复习随手笔记
- android禁止上下拉菜单
- ASP.NET的Web.Config 节点的属性设置说明
- ASP.NET Web实时消息后台服务器推送技术--GoEasy
- Validatebox 验证框的使用
- BZOJ 2301: [HAOI2011]Problem b(莫比乌斯反演,分块,容斥)
- JavaScript实现选项卡时的小技巧
- eCryptfs - unlink系统调用
- 【NOIP2013提高组T6】华容道-BFS+SPFA
- “Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured
- python27+selenium+Phantomjs登录京东
- 数据结构实验之二叉树一:树的同构
- java工具类mht转html格式文件
- 深入浅出Docker Swarm架构与命令