感觉这题真的特别有意思,涉及了 OI 中很多非常有意思、非常美的手法,比如——平衡两部分的时间复杂度、\(n \ln n\) 的那个 Trick等等,真的一种暴力的美学。

题目大意:

多组询问,求 \(f_{n,m}=\sum\limits_{i=1}^n\sum\limits_{j=1}^m \varphi(i\cdot j)\),\(1 \le n,m \le 1e5\),\(T \le 1e4\).

解法:

这里用一个套路一点的式子:\(\varphi(i\cdot j)=\frac{\varphi(i)\cdot \varphi(j)\cdot \gcd(i,j)}{\varphi(\gcd(i,j))}\),于是我们可以得到:

\[f_{n,m}=\sum_{i=1}^n\sum_{j=1}^m \frac{\varphi(i)\cdot \varphi(j)\cdot \gcd(i,j)}{\varphi(\gcd(i,j))}
\]

运用上面那个式子的意义在于现在所有的参数都在值域 \([1,\min(n,m)]\) 之内了,于是我们可以将相同的东西提出来,也就是我上一篇博客中提到的那种方法,得到:

\[f_{n,m}=\sum_{d=1}^{\min(n,m)} \frac{d}{\varphi(d)} \sum_{i=1}^{\left\lfloor\frac{n}{d}\right\rfloor} \sum_{j=1}^{\left\lfloor\frac{m}{d}\right\rfloor}\varepsilon\left(\gcd(i,j)\right)\varphi(id)\varphi(jd)
\]

运用莫比乌斯反演得的意义在于,它把条件式又转化为了贡献式,使它可以快速球和,于是我们运用莫反,并将 \(\mu\) 提出来:

\[f_{n,m}=\sum_{x=1}^{\min(n,m)}\frac{x}{\varphi(x)}\sum_{y=1}^{\left\lfloor \frac{\min(n,m)}{x}\right\rfloor}\mu(y)\sum_{i=1}^{\left \lfloor \frac{n}{xy} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{m}{xy} \right \rfloor} \varphi(ixy)\varphi(jxy)
\]

遇到这样挺极致的情况,我们可以提出一个 \(T=xy\),然后枚举 \(T\) 的因数,以期实现莫反/调和级数的效果。得到:

\[f_{n,m}=\sum_{T=1}^{\min(n,m)} \left(\sum_{x|T} \frac{x}{\varphi(x)} \mu\left(\frac{T}{x}\right)\right)\cdot \left(\sum_{i=1}^{\left \lfloor \frac{n}{T} \right \rfloor}\varphi(iT)\right)\cdot \left(\sum_{j=1}^{\left \lfloor \frac{m}{T} \right \rfloor}\varphi(jT)\right)
\]

我们设 \(g(T)=\sum_{x|T} \frac{x}{\varphi(x)} \mu(\frac{T}{x})\),\(h(n,T)=\sum_{i=1}^{\left \lfloor n \right \rfloor}\varphi(iT)\),于是:

\[f_{n,m}=\sum_{T=1}^{\min(n,m)}g(T)\cdot h(\left\lfloor \frac{n}{T} \right\rfloor,T)\cdot h(\left\lfloor \frac{m}{T} \right\rfloor,T)
\]

注意到 \(g\) 中,\(\sum\limits x \le n \ln n\);\(h\) 中,\(nT \le n \ln n\),所以这两个东西都可以用调和级数预处理出来,于是我们有了一个 \(\Theta(nT)\) 的做法,这是调和级数的美。

考虑继续优化。因为右手边的东西含有下取整,所以我们考虑整除分块;但是这个整除分块中 \(h\) 函数同时含有这两种参数,所以我们考虑前缀和优化:

\[t_{n,m,d}=\sum_{i=1}^d g(i)\cdot g(n,i) \cdot g(m,i)
\]

这个显然过于庞大无法预处理,并且没什么办法快速求值;一旦预处理,询问只要 \(\Theta(\sqrt n)\),但是预处理会超时;一旦不预处理,那么询问会超时,所以我们考虑 平衡两部分时间复杂度

具体来说,我们预处理 \(n\le S\) 且 \(m \le S\),的部分,复杂度 \(nS^2\);查询的时候我们暴力查询 \(\left[ 1, \left\lceil \frac{\min(n,m)}{S}\right\rceil \right]\) 的部分;其余的因为 \(\left \lfloor \frac{n}{T} \right \rfloor\) 都小于等于 \(S\),所以可以整除分块了查询。

总的时间复杂度就等于 \(\gamma = n \ln n + nS^2+T\cdot\left( \sqrt S + \frac{n}{S}\right)\),当 \(\frac{\partial \gamma}{\partial S}=2nS-\frac{Tn}{S^2}+\frac{T}{2\sqrt S}=0\) 时最优,大概是 \(S=50\),并且总的可以在 \(0.5s\) 之内跑出来,这是 平衡之美

代码:https://www.luogu.com.cn/paste/hxjugkts.

从 [P4240 毒瘤之神的考验] 谈 OI 中的美学的更多相关文章

  1. 洛谷 P4240 毒瘤之神的考验 解题报告

    P4240 毒瘤之神的考验 题目背景 \(\tt{Salamander}\)的家门口是一条长长的公路. 又是一年春天将至,\(\tt{Salamander}\)发现路边长出了一排毒瘤! \(\tt{S ...

  2. P4240 毒瘤之神的考验

    题目 P4240 毒瘤之神的考验 神仙题\(emmm\) 前置 首先有一个很神奇的性质: \(\varphi(ij)=\dfrac{\varphi(i)\varphi(j)gcd(i,j)}{\var ...

  3. 洛谷 P4240 - 毒瘤之神的考验(数论+复杂度平衡)

    洛谷题面传送门 先扯些别的. 2021 年 7 月的某一天,我和 ycx 对话: tzc:你做过哪些名字里带"毒瘤"的题目,我做过一道名副其实的毒瘤题就叫毒瘤,是个虚树+dp yc ...

  4. 洛谷P4240 毒瘤之神的考验 【莫比乌斯反演 + 分块打表】

    题目链接 洛谷P4240 题解 式子不难推,分块打表真的没想到 首先考虑如何拆开\(\varphi(ij)\) 考虑公式 \[\varphi(ij) = ij\prod\limits_{p | ij} ...

  5. [luogu 4240] 毒瘤之神的考验

    题目背景 Salamander的家门口是一条长长的公路. 又是一年春天将至,Salamander发现路边长出了一排毒瘤! Salamander想带一些毒瘤回家,但是,这时毒瘤当中钻出来了一个毒瘤之神! ...

  6. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  7. 浅谈OI中的底层优化!

    众所周知,OI中其实就是算法竞赛,所以时间复杂度非常重要,一个是否优秀的算法或许就决定了人生,而在大多数情况下,我们想出的算法或许并不那么尽如人意,所以这时候就需要一中神奇的的东西,就是底层优化: 其 ...

  8. luogu 4240 毒瘤之神的考验 (莫比乌斯反演)

    题目大意:略 题面传送门 果然是一道神duliu题= = 出题人的题解传送门 出题人的题解还是讲得很明白的 1.关于$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m ...

  9. Luogu 4240:毒瘤之神的考验

    传送门 Sol 分开考虑 \(\varphi(ij)\) 中 \(ij\) 的质因子 那么 \[\varphi(ij)=\frac{\varphi(i)\varphi(j)gcd(i,j)}{\var ...

随机推荐

  1. 使用Servlet前Tomcat介绍

    虚拟目录的映射方式:让tomcat服务器自动映射tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录.换句话说,tomcat服务器webapps目录中的web应用,外 ...

  2. 【二食堂】Beta - 设计和计划

    Beta设计和计划 需求再分析 根据助教.老师.用户以及各个团队PM的反馈意见,我们的项目目前有以下问题: 功能不完整 实用价值不高 两方面的缺陷,所以在Beta阶段,我们工作的中心还是完成项目规划中 ...

  3. 2020BUAA软工个人博客作业

    2020BUAA软工个人博客作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 学 ...

  4. 洛谷 P5785 [SDOI2012] 任务安排

    链接: P5785 弱化版:P2365 题意: 有 \(n\) 个任务待完成,每个任务有一个完成时间 \(t_i\) 和费用系数 \(f_i\),相邻的任务可以被分成一批.从零时刻开始这些任务会被机器 ...

  5. oracle物化视图创建及删除

    --删除物化表的日志表 DROP MATERIALIZED VIEW LOG ON 表名; --为将要创建物化视图的表添加带主键的日志表 CREATE MATERIALIZED VIEW LOG ON ...

  6. TensorFlow从入门到入坑(1)

    初识TensorFlow 一.术语潜知 深度学习:深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法. 深度学 ...

  7. 最后的OI(HAOI2020游记)

    马上就省选了,怎么不得写点什么?要不然到最后或许就真的落得个白茫茫大地真干净的局面. 其实也不知道该说啥?我这一路走来,感觉挺赚的. 每一个OIer背后都有一个故事,所以,我有故事,你有酒吗? 依稀记 ...

  8. js实现日期格式化封装-八种格式

    封装一个momentTime.js文件,包含8种格式. 需要传两个参数: 时间戳:stamp 格式化的类型:type, 日期补零的方法用到es6语法中的padStart(length,'字符'): 第 ...

  9. Forest v1.5.12 发布,声明式 HTTP 框架,已超过 1.6k star

    Forest介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL.Header 以及 Body 等信息)绑定到您自定义的 Interfac ...

  10. centos安装pm2报错

    报错信息: /usr/lib/node_modules/pm2/node_modules/chalk/source/index.js:103 ...styles, 这个问题其实很简单,就是npm和no ...