http://www.lydsy.com/JudgeOnline/problem.php?id=2301 (题目链接)

题意

  给出${a,b,c,d,k}$,${n}$组询问,求$${\sum_{i=a}^{b}\sum_{j=c}^{d} [gcd(i,j)=k]}$$

Solution

  莫比乌斯反演,就是一堆公式推啊推。

  运用容斥,那么答案就变成了:$${\sum_{i=1}^{b}\sum_{j=1}^{d} [gcd(i,j)=k]-\sum_{i=1}^{b}\sum_{j=1}^{c-1} [gcd(i,j)=k]-\sum_{i=1}^{a-1}\sum_{j=1}^{d} [gcd(i,j)=k]+\sum_{i=1}^{a-1}\sum_{j=1}^{c-1} [gcd(i,j)=k]}$$

  这${4}$项都长得差不多,我们考虑其一般情况。

  \begin{aligned}   &  \sum_{i=1}^{n}\sum_{j=1}^{m} [gcd(i,j)=k] \\  =&\sum_{i=1}^{\lfloor{n/k}\rfloor}\sum_{j=1}^{\lfloor{m/k}\rfloor} [gcd(i,j)=1]  \\  =&\sum_{t=1}^{n}μ(t)\lfloor\frac{n}{kt}\rfloor\lfloor\frac{m}{kt}\rfloor    \end{aligned}

  于是我们就可以${O(n)}$的计算这个东西了,然而还不够。考虑到${\lfloor\frac{n}{kt}\rfloor}$和${\lfloor\frac{m}{kt}\rfloor}$的取值各有${2\sqrt{n},2\sqrt{m}}$种,所以我们对${μ(t)}$分段求前缀和。代码很好写。

细节

  LL

代码

// bzoj2301
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=1000010;
int p[maxn],vis[maxn],mu[maxn],s[maxn],a,b,c,d,K; LL solve(int n,int m) {
n/=K,m/=K;
if (n>m) swap(n,m);
LL res=0;
for (int i=1,j;i<=n;i=j+1) { //区间[i,j]
j=min(n/(n/i),m/(m/i));
res+=(LL)(n/i)*(m/i)*(s[j]-s[i-1]);
}
return res;
}
int main() {
int T;scanf("%d",&T);
s[1]=mu[1]=1;
for (int i=2;i<maxn;i++) {
if (!vis[i]) p[++p[0]]=i,mu[i]=-1;
for (int j=1;j<=p[0] && i*p[j]<maxn;j++) {
vis[i*p[j]]=1;
if (i%p[j]==0) {mu[i*p[j]]=0;break;}
else mu[i*p[j]]=-mu[i];
}
s[i]=s[i-1]+mu[i];
}
while (T--) {
scanf("%d%d%d%d%d",&a,&b,&c,&d,&K);
printf("%lld\n",solve(b,d)-solve(b,c-1)-solve(a-1,d)+solve(a-1,c-1));
}
return 0;
}

【bzoj2301】 HAOI2011—Problem b的更多相关文章

  1. 【bzoj2301】[HAOI2011]Problem b 莫比乌斯反演

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

  2. 【BZOJ2302】[HAOI2011]Problem C(动态规划)

    [BZOJ2302][HAOI2011]Problem C(动态规划) 题面 BZOJ 洛谷 题解 首先如果\(m=0\)即没有特殊限制的话,那么就和这道题目基本上是一样的. 然而这题也有属于这题的性 ...

  3. 【BZOJ2298】[HAOI2011]problem a DP

    [BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...

  4. 【BZOJ2298】[HAOI2011]problem a

    题解: 虽然也是个可以过得做法...但又没有挖掘到最简单的做法... 正解是发现这个东西等价于求不相交区间个数 直接按照右端点排序,然后贪心就可以O(n)过了 而我的做法是按照a排序(其实我是在模拟这 ...

  5. 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)

    [BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...

  6. 【Luogu4137】Rmq Problem/mex (莫队)

    [Luogu4137]Rmq Problem/mex (莫队) 题面 洛谷 题解 裸的莫队 暴力跳\(ans\)就能\(AC\) 考虑复杂度有保证的做法 每次计算的时候把数字按照大小也分块 每次就枚举 ...

  7. 【BZOJ2299】[HAOI2011]向量(数论)

    [BZOJ2299][HAOI2011]向量(数论) 题面 BZOJ 洛谷 题解 首先如果我们的向量的系数假装可以是负数,那么不难发现真正有用的向量只有\(4\)个,我们把它列出来.\((a,b)(a ...

  8. 【BZOJ4999】This Problem Is Too Simple!(线段树)

    [BZOJ4999]This Problem Is Too Simple!(线段树) 题面 BZOJ 题解 对于每个值,维护一棵线段树就好啦 动态开点,否则空间开不下 剩下的就是很简单的问题啦 当然了 ...

  9. 【BZOJ2300】[HAOI2011]防线修建 set维护凸包

    [BZOJ2300][HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可 ...

随机推荐

  1. FFmpeg+vs2013开发环境配置(windows)

    1.下载ffmpeg包(dll.include.lib)   https://ffmpeg.zeranoe.com/builds/         有3个版本:Static.Shared和Dev St ...

  2. 使用tensorflow进行mnist数字识别【模型训练+预测+模型保存+模型恢复】

      import sys,os sys.path.append(os.pardir) import numpy as np from tensorflow.examples.tutorials.mni ...

  3. C++ 单例模式总结与剖析

    目录 C++ 单例模式总结与剖析 一.什么是单例 二.C++单例的实现 2.1 基础要点 2.2 C++ 实现单例的几种方式 2.3 单例的模板 三.何时应该使用或者不使用单例 反对单例的理由 参考文 ...

  4. Table 组件构建过程中遇到的问题与解决思路

    在 GearCase 开源项目构建 Table 组件的过程中.遇到了各式各样的问题,最后尝试了各种方法去解决这些问题. 遇到的部分问题 checkbox 的全选和半选问题 table 组件的排序请求方 ...

  5. GearCase UI v0.2 版本

    12 月闲暇的时间一直在更新 GearCase.通过不懈的努力,GearCase 今天迎来了一次中间版本的更新,这次的更新主要加入了 Springs 动画组件,部分组件也添加了此组件的动画效果. &g ...

  6. MyBatis思维导图

    1.初识框架技术 2.搭建MyBatis环境 3.掌握MyBatis的核心API 4.掌握MyBatis的核心配置文件:主要用于配置数据库连接和MyBatis运行时所需的各种特性 5.掌握SQL映射文 ...

  7. wf4 FlowChart 理解

    1. 工作流是异步的,所以需要信号. 2. 需要创建 NativeActivity<T> 与整个FlowChart交互. 它的返回值 Result 正确含义是 该 Activity处理之后 ...

  8. Tomcat部署与使用

    Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...

  9. 让CentOS在同一个窗口打开文件夹

    http://www.linuxidc.com/Linux/2010-04/25756.htm

  10. 作业要求 20181127-5 Beta发布用户使用报告

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2450 一.用户反馈 反馈截图(部分) 三.用户反馈情况统计图