Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101
莫比乌斯反演
1101: [POI2007]Zap
设 \(f(i)\) 表示 \((x,y)\) \(x\in [1,a],y\in [1,b]\) 满足 \(gcd(x,y)=i\) 的对数
那么答案就是 \(f(d)\)
构造一个函数 \(g(i)\) 表示 \((x,y)\) \(x\in [1,a],y\in [1,b]\) 满足 \(gcd(x,y)|i\) 的对数
于是 \(g\) 与 \(f\) 满足关系式
\(g(i)=\sum\limits_{i|k}f(k)\)
满足莫比乌斯反演的第二种情况
于是套公式反演得
\(f(i)=\sum\limits_{i|k}\mu(\frac {k}{i})g(k)\)
对于 \(g(i)\) 考虑 \(gcd(x,y)|i\) 即 \(x\) 与 \(y\) 都有 \(i\) 这个因子
那么 \(x\) 有 \([\frac{a}{i}]\) 个取值 \(y\) 有 \([\frac{b}{i}]\) 个取值
\(g(i)=[\frac{a}{i}]\times[\frac{b}{i}]\)
于是答案
\[
\begin{aligned}
ans=f(d)&=\sum\limits_{d|k}\mu(\frac {k}{d})g(k)\\
&=\sum\limits_{d|k}\mu(\frac {k}{d})[\frac{a}{k}]\times[\frac{b}{k}]
\end{aligned}
\]
设 \(t=\frac{k}{d},k=d\times t;\)
\[
\begin{aligned}
ans=\sum\limits_{t=1}^{min([\frac{a}{d}],[\frac{b}{d}])}\mu(t)[\frac{\frac{a}{t}}{d}][\frac{\frac{b}{t}}{d}]
\end{aligned}
\]
筛一下 \(\mu(i)\)
于是就可以做到 \(O(n\times t)\)
但是效率不行呀
观察到一个形似 \(\sum\limits_{i=1}^{i\le n}[\frac{x}{i}]\) 的式子。
整除分块:(选自他人博客,但是找不到了博客地址了QAQ)
整除分块可以做到 \(O(\sqrt{n}):\)
正确性证明
开始时左端点是 \(1\) 显然是没有问题的,而以后的每一次操作 \(L=R+1\),因此,我们只需要证明每次的 \(R\) 都为正确的即可。
首先\([\frac {n}{i}]\)一定是属于该除数区间的,所以我们只需要证明该数为区间上界。
反证法。设X=\([\frac {n}{i}]\)不是我们想要得到的 \(R\),那么至少有 \(X+1\)属于答案区间。
于是有\([\frac{N}{X+1}⌋=i\),因为是下取整,于是有\(N≥i\times (X+1)\),于是有 \([\frac{N}{i}]≥([\frac{i×(X+1)}{i}]=X+1)\)
而根据定义有 \(X=[\frac{N}{i}]\),于是有 \(X≥X+1\),与事实相悖。
复杂度证明
分情况讨论。
当所选除数 \(\le \sqrt{N}\) 时,显然这一部分的除数区间个数不会超过 \(\sqrt{N}\) 个。
当所选除数\(\geq \sqrt{N}\) 时,得到的商 \(\le \sqrt{N}\),商不超过 \(\sqrt{N}\) 种,所以除数区间也不会超过 \(\sqrt{N}\) 个。
于是总时间复杂度 \(O(\sqrt{N})\)。
Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块的更多相关文章
- BZOJ1101: [POI2007]Zap(莫比乌斯反演)
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2951 Solved: 1293[Submit][Status ...
- [P4450] 双亲数 - 莫比乌斯反演,整除分块
模板题-- \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[(i,j)=k] = \sum\limits_{i=1}^a\sum\limits_{j=1}^b[k|i ...
- [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)
[POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...
- 【BZOJ1101】Zap [莫比乌斯反演]
Zap Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 对于给定的整数a,b和d,有多少正整 ...
- 1101: [POI2007]Zap(莫比乌斯反演)
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定 ...
- 莫比乌斯反演&整除分块学习笔记
整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...
- 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)
题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...
- BZOJ 1101: [POI2007]Zap( 莫比乌斯反演 )
求 answer = ∑ [gcd(x, y) = d] (1 <= x <= a, 1 <= y <= b) . 令a' = a / d, b' = b / d, 化简一下得 ...
- 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...
随机推荐
- Egret打包App 修改App名称和图标 (Egret4.1.0)
图标替换位置在项目res下的drawable这些目录下,用新图标覆盖即可. 这里我用白色图片替换了白鹭默认的图片ic_launcher.png 修改App名字,在res->value->s ...
- 【BZOJ2668】[cqoi2012]交换棋子 费用流
[BZOJ2668][cqoi2012]交换棋子 Description 有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列 ...
- Windows Phone 自定义一个启动画面
1.新建一个UserControl <UserControl x:Class="LoadingPage.PopupSplash" xmlns="http://sch ...
- SSL安装方法一:在Windows Server 2008安装SSL证书(IIS 7.0)
购买的是GlobalSign 公司的通配符域名型SSL 大致的意思就是“通配符公用名填写*.域名.com,这个下面的所有子域名是不受数量限制的,*可以换成任意字符” 1 生成数字证书签名请求文件(CS ...
- maven学习(一)(转)
我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了.写该篇博文,就是为了帮助那些和我一样对于maven迷迷糊糊的人. ...
- 160225、解决纯js文件国际化的问题
1.js中国际化 function test(){ alert("<s:text name='jsp.loading'/>"); } 2.最近在做strut ...
- Oracle涂抹oracle学习笔记第8章RMAN说,我能备份
本次测试服务器为172.16.25.33 使用rman连接本地数据库 rman target / 在rman中执行启动与关闭的命令与sqlplus相同 在rman中执行sql语句 sql ‘需要执行的 ...
- debug kibana in chrome
kibana5.6.5版本 在kibana根目录运行命令:NODE_OPTIONS='--inspect --debug' npm start 也可以尝试命令:NODE_OPTIONS="- ...
- PHP的线性安全和非线性安全的区别
从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方 ...
- 【我的Android进阶之旅】解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符
1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在调试过程中,编译的时候出现了如下所示的错误: 部分输出日志如下所示: ...