感觉这题真的特别有意思,涉及了 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. 【c++ Prime 学习笔记】第2章 变量和基本类型

    2.1 基本内置类型 基本数据类型包含了算术类型(arithmetic type)和空类型(void) 算数类型,包含了字符.整型数.布尔值和浮点数 空类型,不对应具体的值 2.1.1 算术类型 算术 ...

  2. 回应:Alpha深度评测

    零.说明 本篇博客是针对博客沉舟侧畔千帆过,病树前头万木春--对[题士]产品的深度测评与解析的回应,用以说明『题士』开发团队的观点.改进计划等 感谢HansBug.CookieLau助教及各位老师.测 ...

  3. eureka服务端和客户端的简单搭建

    本篇博客简单记录一下,eureka 服务端和 客户端的简单搭建. 目标: 1.完成单机 eureka server 和 eureka client 的搭建. 2.完成eureka server 的添加 ...

  4. InitSpatialMetaData()速度慢的问题

    解决方法:with sqlite3.connect(dbfile) as con: con.enable_load_extension(True) con.execute("SELECT l ...

  5. stm32电机控制之控制两路直流电机!看完你会了吗

    手头上有一个差分驱动的小车,使用两个直流电机驱动,要实现小车的在给定速度下运动,完成直线行驶,转向,加速,刹车等复杂运动. 使用的电机是12v供电的直流电机,带编码器反馈,这样就可以采用闭环速度控制, ...

  6. [CSP-S2021] 回文

    链接: P7915 题意: 给出一个长度为 \(2n\) 的序列 \(a\),其中 \(1\sim n\) 每个数出现了 2 次.有 L,R 两种操作分别是将 \(a\) 的开头或末尾元素加入到初始为 ...

  7. Typora简介

    Typora是什么 Typora是一款支持实时预览的Markdown文本编辑器,拥有macOS.Windows.Linux三个平台的版本,并且完全免费. 下载地址:https://www.typora ...

  8. Awesome metaverse projects (元宇宙精选资源汇总)

    Awesome Metaverse 关于 Metaverse 的精彩项目和信息资源列表. 由于关于 Metaverse 是什么存在许多相互竞争的想法,请随时以拉取请求.问题和评论的形式留下反馈. We ...

  9. 超过1W字深度剖析JVM常量池(全网最详细最有深度)

    面试题:String a = "ab"; String b = "a" + "b"; a == b 是否相等 面试考察点 考察目的: 考察对 ...

  10. 使用BadBoy录制JMeter脚本

     BadBoy简介 BadBoy是一款免费WEB自动化测试工具,其实就是一个浏览器模拟工具,具有录制和回放功能,支持对录制出来的脚本进行调试.同时支持捕获表单数据的功能,所以能够进行自动化测试.但目前 ...