BZOJ 2301 【HAOI2011】 Problem b
Description
Input
第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k
Output
共n行,每行一个整数表示满足要求的数对(x,y)的个数
HINT
100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000
过了这么久终于写出了莫比乌斯反演的入门题TAT……
这道题主要用到了莫比乌斯函数的一个性质,对于任意正整数$n$,有:$$\sum_{d|n} \mu (d)= \begin{cases} 1 &(n=1) \\ 0 &(n>1) \end{cases}$$
所以$[gcd(i,j)=1]$这个式子可以表示为:$$\sum_{d|gcd(i,j)}\mu (d)$$
于是莫比乌斯反演对于处理$gcd(x,y)=1$这类条件时特别好用。
莫比乌斯反演戳这里
本题题解参见黄学长的博客(我已经翻到上一页了……想看本题代码请翻下一篇)
毕竟我就是看着黄学长的博客做出来的……
下面贴代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define maxn 50010 using namespace std;
typedef long long llg; int T,a,b,c,d,k,ls;
int mu[maxn],s[maxn],w[maxn];
bool vis[maxn]; int getint(){
int w=0;bool q=0;
char c=getchar();
while((c>'9'||c<'0')&&c!='-') c=getchar();
if(c=='-') c=getchar(),q=1;
while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar();
return q?-w:w;
} void get(){//线性筛素数与莫比乌斯函数
mu[1]=1;
for(int i=2;i<maxn;i++){
if(!vis[i]) s[++ls]=i,mu[i]=-1;
for(int j=1;j<=ls && s[j]*i<maxn;j++){
vis[s[j]*i]=1;
if(i%s[j]) mu[s[j]*i]=-mu[i];
else{mu[s[j]*i]=0;break;}
}
}
for(int i=1;i<maxn;i++) w[i]=w[i-1]+mu[i];
} llg F(int n,int m){//求出x在[1,n]中、y在[1,m]中的答案
llg ans=0;
if(n>m) swap(n,m);
for(int i=1,nt;i<=n;i=nt+1){
nt=min(n/(n/i),m/(m/i));
ans+=(llg)(w[nt]-w[i-1])*(llg)(n/i)*(llg)(m/i);
}
return ans;
} int main(){
File("a");
get(); T=getint();
while(T--){
a=getint(); b=getint(); c=getint();
d=getint(); k=getint(); a--; c--;//注意边界
a/=k; b/=k; c/=k; d/=k;
printf("%lld\n",F(b,d)-F(a,d)-F(b,c)+F(a,c));//转化为前缀和容斥求解
}
return 0;
}
BZOJ 2301 【HAOI2011】 Problem b的更多相关文章
- 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)
[BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...
- 清北学堂例题 LUOGU2519 【HAOI2011】PROBLEM A
题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行 ...
- 【BZOJ2301】【HAOI2011】Problem b [莫比乌斯反演]
Problem b Time Limit: 50 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 对于给出的n个询问,每次 ...
- 【HAOI2011】problem b
数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...
- 【HAOI2011】problem a
又看题解了,这样下去要跪啊QAQ 原题: 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 1≤n≤100000 0≤ ...
- 清北学堂例题 LUOGU2523【HAOI2011】problem c
题目描述 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了,就尝试ai+1 ...
- 【题解】【HAOI2011】Problem b
\(Luogu2522\) 题目大意:求下面式子的值: \[\sum_{i=x}^n\sum_{j=y}^m[\gcd(i,j)=k] \] 这个东西直接求不好求,考虑差分,从\([1,n]\)的范围 ...
- 【BZOJ2998】Problem A(动态规划)
[BZOJ2998]Problem A(动态规划) 题面 BZOJ 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接\(dp ...
- BZOJ 1854 【Scoi2010】 游戏
Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...
随机推荐
- 集群服务器 时间同步 - Chrony
greenplum,openstack等云计算项目需要集群服务器部署,服务器之间的时间需要同步,但并不是所有机器可以 直接连外网,这时可以用Chrony工具解决. 解决方法是将其中一台设为时间服务器, ...
- lvm[12446]: Another thread is handling an event. Waiting
在检查一Linux服务器时,发现日志里面有大量"lvm[12446]: Another thread is handling an event. Waiting..." Jul ...
- Oracle安装前用户信息设置
如果是重复安装,首先需要清除已经存在的软件安装记录: rm -fr /usr/local/bin/*oraenv rm -fr /usr/local/bin/dbhome rm -fr /usr/tm ...
- 烂泥:NFS做存储与KVM集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前有关NFS的文章,我们介绍的都是NFS的使用挂载等等.这篇文章我们介绍有关NFS作为存储使用. 既然本篇文章的主题是有关NFS的,我们还是先把NFS ...
- [转]Zabbix 3.0 安装笔记
Zabbix 3.0 只支持CentOS 7.0以上版本,所以先在虚拟机中安装好CentOS 7.0 x64,并设置好IP,允许虚拟机联网. 1.安装MySQL 从最新版本的linux系统开始,默认的 ...
- Android ScrollView中的组件设置android:layout_height="fill_parent"不起作用的解决办法
例子,在ScrollView下加入的组件,无论如何也不能自动扩展到屏幕高度. 布局文件. [html] <?xml version="1.0" encoding=" ...
- android 判断字符串是否为空与比对["=="与equals()的区别]
if (s == null || s.equals("")) ; } s.equals("")里面是要比对的字符串 声明字符串未赋初始值或值,然后比对就会出错, ...
- [转]ASP.NET MVC IOC 之AutoFac攻略
本文转自:http://www.cnblogs.com/WeiGe/p/3871451.html 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用A ...
- 关于Lucene 3.0升级到Lucene 4.x 备忘
最近,需要对项目进行lucene版本升级.而原来项目时基于lucene 3.0的,很古老的一个版本的了.在老版本中中,我们主要用了几个lucene的东西: 1.查询lucene多目录索引. 2.构建R ...
- 《JavaScript权威指南 第六版 中文版》(一)
<JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...