【SDOI 2014】数表
题意
题解
显然就是求 $\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sigma_1(\gcd{(i,j)}) [\gcd(i,j)\le a]$($\sigma_1(x)$ 表示求 $x$ 的所有约数之和),看到 $\gcd$ 就知道是莫比乌斯反演基础题吧
如果不考虑 $a$ 的限制,这就是推一遍莫反的模板题,那先不考虑,则原式变为$$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sigma_1(\gcd{(i,j)})$$
根据套路枚举约数 $$\sum\limits_{k=1}^{n} \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sigma_1(k) [\gcd(i,j)=k]$$
显然当 $i|k, j|k$ 时,$\gcd(i,j)$ 才有可能为 $k$。所以简化式子得 $$\sum\limits_{k=1}^{n} \sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor} \sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor} \sigma_1(k) [\gcd(i,j)=1]$$
把 $\sigma_1(k)$ 挪到前面,并用经典公式 $\sum\limits_{d|n} \mu(d) = [n=1]$ 对 $[\gcd(i,j)=1]$ 反演 $$\sum\limits_{k=1}^{n} \sigma_1(k)\sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor} \sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor} \sum\limits_{d|\gcd{(i,j)}} \mu(d)$$
$$\sum\limits_{k=1}^{n} \sigma_1(k)\sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor} \sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor} \sum\limits_{d|i, d|j} \mu(d)$$
根据套路,把 $d$ 挪到前面并改成枚举 $x$。由于限制 $d|i, d|j$,只有 $i$ 和 $j$ 都是 $d$ 的倍数时才会累加一个 $\mu(d)$。所以对于一个 $d$,$\mu(d)$ 会被累加 $\lfloor\frac{n}{kd}\rfloor \lfloor\frac{m}{kd}\rfloor$ 次(易证 $\lfloor\frac{\lfloor \frac{x}{y}\rfloor}{z}\rfloor = \lfloor\frac{\frac{x}{y}}{z}\rfloor$)。故式子转化为 $$\sum\limits_{k=1}^{n} \sigma_1(k) \sum\limits_{d=1}^{n} \mu(d) \lfloor\frac{n}{kd}\rfloor \lfloor\frac{m}{kd}\rfloor$$
 令 $n\le m$,则显然当 $d\gt \lfloor \frac{n}{k}\rfloor$ 时,$\lfloor \frac{n}{dk}\rfloor=0$。所以可以更改 $d$ 的上界 $$\sum\limits_{k=1}^{n} \sigma_1(k) \sum\limits_{d=1}^{\lfloor \frac{n}{k}\rfloor} \mu(d) \lfloor\frac{n}{kd}\rfloor \lfloor\frac{m}{kd}\rfloor$$
 根据套路,令 $T=kd$,而把 $ \sum\limits_{d=1}^{\lfloor \frac{n}{k}\rfloor}$ 乘以 $k$ 就变成了 $T$ 的枚举式,然后我们会发现 $T$ 的枚举值依次是 $k,2k,3k,...,\lfloor \frac{n}{k}\rfloor\times k$,也就是枚举一组 $k、T$ 要满足 $T$ 是 $k$ 的倍数。显然可以先枚举 $T$,然后枚举 $k$,要求 $k$ 是 $T$ 的约数。于是式子最终转化为 $$\sum\limits_{T=1}^{n} \lfloor\frac{n}{T}\rfloor \lfloor\frac{m}{T}\rfloor \sum\limits_{k|T} \sigma_1(k) \mu(\frac{T}{k}) $$
如果没有 $a$ 的限制,这道题到此就做完了,整除分块回答询问即可
有 $a$ 的限制的话我们就考虑离线排序回答,这样有机会使总时间复杂度仍然只是扫一遍
我们设 $g(T) = \sum\limits_{k|T} \sigma_1(k) \mu(\frac{T}{k})$,显然当 $\sigma_1(k)\le a$ 时,才会对 $g(T)$ 产生贡献
于是将询问按 $a$ 从小到大排序后扫一遍,$a$ 变大会使得一些 $\sigma_1(a)$ 对 $g(T)$ 产生贡献,我们就用枚举倍数的方法找到所有的 $T$,然后因为我们要动态修改 $g(T)$ 的值,还要区间询问,所以写一个常数小的树状数组即可
处理完新产生的贡献之后回答这组询问即可
最坏情况下所有的 $\sigma_1(d)$ 都能产生贡献。枚举所有倍数 $T$ 的复杂度为 $\sum\limits_{i=1}^{n} \frac{n}{i}\le n\log_2{n}$,因为考虑 $\frac{n}{1}+\frac{n}{2}+\frac{n}{3}+...+\frac{n}{n}$ 的值(这就是枚举的量),它显然小于 $\frac{n}{1}+\frac{n}{2}^2+\frac{n}{4}^4+\frac{n}{8}^8+...+\frac{n}{\lfloor\log_2{n}\rfloor}^{\lfloor\log_2{n}\rfloor} = n\log_2{n}$(这就是分治的过层,共 $log_2$ 层,每层 $n$ 个点,所以共 $n\log_2{n}$ 个点),所以简单得证
对于每个枚举的倍数 $T$,更新 $g(T)$ 的时间复杂度为 $\log{n}$,所以修改部分的总复杂度是 $O(n\log^2{n})$
每次询问需要整除分块,查询区间和的复杂度为 $O(\log{n})$,所以总复杂度为 $O(n\log^2{n} + q\sqrt{n}\log{n})$
取模的话,如果要求答案膜 $p$,你可以一直膜 $kp(k∈Z)$,输出时再膜 $p$。所以用 unsigned int 自然溢出即可,最后输出答案时膜 $2^{31}$。
【SDOI 2014】数表的更多相关文章
- [SDOI 2014]数表
		
Description 有一张N×m的数表,其第i行第j列(1 < =i < =N,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...
 - 解题:SDOI 2014 数表
		
题面 为了好写式子,先不管$a$的限制 设$facs$为因子和,那么有 $ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^mfacs(gcd(i,j))$ 再设$f( ...
 - 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」
		
题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...
 - 【BZOJ 3529】【SDOI 2014】数表
		
看Yveh的题解,这道题卡了好长时间,一直不明白为什么要······算了当时太naive我现在都不好意思说了 #include<cstdio> #include<cstring> ...
 - 【BZOJ 3531】【SDOI 2014】旅行
		
因为有$10^5$个宗教,需要开$10^5$个线段树. 平时开的线段树是“满”二叉树,但在这个题中代表一个宗教的线段树管辖的区间有很多点都不属于这个宗教,也就不用“把枝叶伸到这个点上”,所以这样用类似 ...
 - [BZOJ 3530][Sdoi 2014]数数
		
阿拉~好像最近总是做到 AC 自动机的题目呢喵~ 题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp 先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不 ...
 - BZOJ 3533 sdoi 2014 向量集
		
设(x,y)为Q的查询点,分类讨论如下:1.y>0: 最大化a*x+b*y,维护一个上凸壳三分即可 2.y<0:最大化a*x+b*y 维护一个下凸壳三分即可 我们考虑对时间建出一棵线段 ...
 - 解题:SDOI 2014 重建
		
题面 做这个这个题需要稍微深入理解一点矩阵树定理:套矩阵树定理得到的东西是有意义的,它是“所有生成树边权乘积之和”(因为度数矩阵是点的边权和,邻接矩阵是边权),即$\sum_{t}\prod_{e∈t ...
 - 【BZOJ 3530】【SDOI 2014】数数
		
http://www.lydsy.com/JudgeOnline/problem.php?id=3530 上午gty的测试题,爆0了qwq 类似文本生成器那道题,把AC自动机的转移建出来,准确地说建出 ...
 
随机推荐
- linux之文件目录,输入及输出
			
文件目录结构 ls 查看文件 ll 查看详细文件 文件和目录被组织成一颗倒置的树状结构 文件系统从根开始,'/' 文件名严格区分大小写 隐藏文件以.开头 文件的分隔符为'/' 文件命名规范 文件字符最 ...
 - appium+python+android+HTMLTestRunner使用过程中的问题
			
1:问:appium客户端刚发布了一版新的,我想升级可以吗?答:建议对于刚发布的新版本不要立即升级,因为客户端每升级一版它肯定会去增加和删减一些语句.所以不建议立即升级. 应该先采取调研的态度看 ...
 - Spark分区实例(teacher)
			
package URL1 import org.apache.spark.Partitioner import scala.collection.mutable class MyPartitioner ...
 - Spring Bean 管理
			
1 Spring 工厂类 2 XML 方式 1.1 Bean 实例化的三种方式 无参构造方法 静态工厂方法 实例工厂方法 3 XML方式属性注入 4 注解方式 5 注解方式属性注入
 - 【Linux开发】彻底释放Linux线程的资源
			
Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的.而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中,反复建立线程,而线程又默认的退出 ...
 - Java小知识----List复制:浅拷贝与深拷贝
			
原文地址: https://blog.csdn.net/demonliuhui/article/details/54572908 List浅拷贝 众所周知,list本质上是数组,而数组的是以地址的形式 ...
 - spring请求多方式
			
<!-- 使表单可以使用GET,.POST. HEAD.OPTIONS.PUT.DELETE.TRACE方式提交--> <filter> <filter-name> ...
 - Entity Framework常用方法及案例
			
⒈Skip(int count) 说明:跳过集合的前n个元素:延迟.即我们跳过给定的数目返回后面的结果集. ⒉Take(int count) 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集 ...
 - mysql jdbc url
			
地址为jdbc:mysql://localhost:3306/mymiaosha?characterEncoding=utf-8时访问时可能会出现下图提示 地址改为jdbc:mysql://local ...
 - POJ - 1149 PIGS (建图思维+最大流)
			
(点击查看原题) 题目分析 (以下均为 Edelweiss 大佬的思路,博主承认自己写不了这么好,但是学习的心促使我记录下这个好题的写法,所以代码是我写的) [题目大意] 有 M 个猪圈,每个猪圈里初 ...