第一次接触莫比乌斯反演,总之脑子都快要炸掉了……好难啊!本蒟蒻表示根本无法理解呜呜呜呜呜……不过在机房DL的帮助下总算是磕磕绊绊的A掉了这一题:

  这道题目要我们的求的是:(1)ΣiΣj [gcd(i,j)==k], 区间范围内的限定我们都可以利用容斥来解决,所以默认为所求函数值的(i, j)取值范围为(1~n,1~m)。注意到gcd(i, j) == k比较的不好求解,我们把k除到外面去,得到:(2)ΣiΣj [gcd(i,j)==1](i∈n/k, j∈m/k); 这里将[gcd(i,j)==1]替换为单位元ε(ε(i) = i == 1 ? 1 : 0)。根据狄利克雷卷积有μ * 1 = ε(*为卷积符号),所以我们得到式子(3)ΣiΣjΣd|gcd(i,j)μ(d)。这里是考虑对于每一对i,j有哪几个d与之对应,我们将d提取出来,反之枚举符合d|gcd(i,j)的数对。由此有(4)Σd μ(d) * (n / (d*k)) * (m / (d * k))(d∈min(n, m) / (d * k))。

  但是利用最后这个式子求解的复杂度依然太高了,不过因为n/i的取值最多只有2*sqrt(n)种(若i<sqrt(n),i的取值只有sqrt(n)种,若i>=sqrt(n),n/i<=sqrt(n),所以一共最多只有2*sqrt(n)种),所以在很大的范围内实际上(n / (d*k)) * (m / (d * k))都是一个常数,我们就可以利用μ(d)的前缀和来实现快速求解。

  设当前枚举到的d,pos = min(n / (n / d), m / (m / d)); 这个pos就是从当前位置一直到达pos,(n / (d*k)) * (m / (d * k))都是一个常数,只需要计算一次之后利用前缀和求解。

  贴代码,再一次被自己蠢哭,智商堪忧怎么办啊QAQ(向数学组DL低头,伏地%%%,跪地%%%!!!)

#include <bits/stdc++.h>
using namespace std;
#define maxn 65000
int tot, T, maxx = , sum[maxn], pri[maxn], Mu[maxn];
bool is_prime[maxn]; int read()
{
int x = , k = ;
char c;
c = getchar();
while(c < '' || c > '') { if(c == '-') k = -; c = getchar(); }
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * k;
} int Get_Mu()
{
Mu[] = ;
for(int i = ; i <= maxx; i ++)
{
if(!is_prime[i]) pri[++ tot] = i, Mu[i] = -;
for(int j = ; j <= tot; j ++)
{
if(i * pri[j] > maxx) break;
is_prime[i * pri[j]] = true;
if(!(i % pri[j]))
{
Mu[i * pri[j]] = ;
break;
}
else Mu[i * pri[j]] = - Mu[i];
}
}
for(int i = ; i <= maxx; i ++)
sum[i] = sum[i - ] + Mu[i];
} int cal(int n, int m)
{
if(n > m) swap(n, m);
int ans = , pos;
for(int i = ; i <= n; i = pos + )
{
pos = min(n / (n / i), m / (m / i));
ans += (sum[pos] - sum[i - ]) * (n / i) * (m / i);
}
return ans;
} int main()
{
Get_Mu();
T = read();
while(T --)
{
int a = read(), b = read(), c = read(), d = read(), k = read();
a --, c --;
a /= k, b /= k, c /= k, d /= k;
int ans = cal(a, c) + cal(b, d) - cal(a, d) - cal(b, c);
printf("%d\n", ans);
}
return ;
}

【题解】HAOI2011Problem b的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 云监控自定义HTTP状态码说明

    您在使用站点监控时,返回的6XX状态码均为云监控自定义HTTP状态码,具体含义如下表所示: 状态码      含义     备注  610  HTTP连接超时      监测点探测您的网站时出现连接超 ...

  2. 【PBR的基本配置】

    PBR基于策略路由的配置 一:基于报文协议的本地PBR 1:首先进行理论分析:在SW1上利用基于报文报文协议类型的PBR,在sw1与sw3的连接链路上,利用acl制定允许tcp的报文通过3000,并与 ...

  3. 【ssh服务配置】

    根据项目需求,搭建好拓扑图如下: 第一种验证方式:给予密码和用户名登录 Ssh server配置: 首先在服务器上创建一个rsa加密算法的秘钥对: 对ssh服务进行开启: 创建用户的虚拟终端登录界面: ...

  4. TP3.2.3 接入阿里sms 短信接口

    阿里云短信接口 配置文件 config.php //阿里大鱼 'Ali_SMS' =>array( 'sms_temp' =>'短信模板', 'sms_sign' =>'签名', ' ...

  5. Hadoop(14)-MapReduce框架原理-切片机制

    1.FileInputFormat切片机制 切片机制 比如一个文件夹下有5个小文件,切片时会切5个片,而不是一个片 案例分析 2.FileInputFormat切片大小的参数配置 源码中计算切片大小的 ...

  6. 2.5 进程控制之wait函数

    一.绪论 一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果 是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是 ...

  7. Python入门学习笔记4:他人的博客及他人的学习思路

    看其他人的学习笔记,可以保证自己不走弯路.并且一举两得,即学知识又学方法! 廖雪峰:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958 ...

  8. Scrapy框架的基本使用

    安装 pip install scrapy 基础使用 1. 创建一个工程:scrapy startproject 2. 在工程目录下创建一个爬虫文件 cd 工程 scrapy genspider 爬虫 ...

  9. 局域网访问不到linux下的tomcat

    问题描述: CentOS安装完成Tomcat后,访问本地:http://localhost:8080/正确.但局域网内无法访问,而且服务器可ping通 经查原因为防火墙开启: [root@localh ...

  10. RHCE7认证学习笔记17——KickStart安装系统

    一.自动化安装系统工具 1.Cobbler    另一个自动化安装工具: 2.Kickstart 二.使用kickstart自动化安装系统 服务器安装的软件: 1.dhcp服务   [root@lin ...