从 [P4240 毒瘤之神的考验] 谈 OI 中的美学
感觉这题真的特别有意思,涉及了 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))}\),于是我们可以得到:
\]
运用上面那个式子的意义在于现在所有的参数都在值域 \([1,\min(n,m)]\) 之内了,于是我们可以将相同的东西提出来,也就是我上一篇博客中提到的那种方法,得到:
\]
运用莫比乌斯反演得的意义在于,它把条件式又转化为了贡献式,使它可以快速球和,于是我们运用莫反,并将 \(\mu\) 提出来:
\]
遇到这样挺极致的情况,我们可以提出一个 \(T=xy\),然后枚举 \(T\) 的因数,以期实现莫反/调和级数的效果。得到:
\]
我们设 \(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)\),于是:
\]
注意到 \(g\) 中,\(\sum\limits x \le n \ln n\);\(h\) 中,\(nT \le n \ln n\),所以这两个东西都可以用调和级数预处理出来,于是我们有了一个 \(\Theta(nT)\) 的做法,这是调和级数的美。
考虑继续优化。因为右手边的东西含有下取整,所以我们考虑整除分块;但是这个整除分块中 \(h\) 函数同时含有这两种参数,所以我们考虑前缀和优化:
\]
这个显然过于庞大无法预处理,并且没什么办法快速求值;一旦预处理,询问只要 \(\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 中的美学的更多相关文章
- 洛谷 P4240 毒瘤之神的考验 解题报告
P4240 毒瘤之神的考验 题目背景 \(\tt{Salamander}\)的家门口是一条长长的公路. 又是一年春天将至,\(\tt{Salamander}\)发现路边长出了一排毒瘤! \(\tt{S ...
- P4240 毒瘤之神的考验
题目 P4240 毒瘤之神的考验 神仙题\(emmm\) 前置 首先有一个很神奇的性质: \(\varphi(ij)=\dfrac{\varphi(i)\varphi(j)gcd(i,j)}{\var ...
- 洛谷 P4240 - 毒瘤之神的考验(数论+复杂度平衡)
洛谷题面传送门 先扯些别的. 2021 年 7 月的某一天,我和 ycx 对话: tzc:你做过哪些名字里带"毒瘤"的题目,我做过一道名副其实的毒瘤题就叫毒瘤,是个虚树+dp yc ...
- 洛谷P4240 毒瘤之神的考验 【莫比乌斯反演 + 分块打表】
题目链接 洛谷P4240 题解 式子不难推,分块打表真的没想到 首先考虑如何拆开\(\varphi(ij)\) 考虑公式 \[\varphi(ij) = ij\prod\limits_{p | ij} ...
- [luogu 4240] 毒瘤之神的考验
题目背景 Salamander的家门口是一条长长的公路. 又是一年春天将至,Salamander发现路边长出了一排毒瘤! Salamander想带一些毒瘤回家,但是,这时毒瘤当中钻出来了一个毒瘤之神! ...
- [技术]浅谈OI中矩阵快速幂的用法
前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...
- 浅谈OI中的底层优化!
众所周知,OI中其实就是算法竞赛,所以时间复杂度非常重要,一个是否优秀的算法或许就决定了人生,而在大多数情况下,我们想出的算法或许并不那么尽如人意,所以这时候就需要一中神奇的的东西,就是底层优化: 其 ...
- luogu 4240 毒瘤之神的考验 (莫比乌斯反演)
题目大意:略 题面传送门 果然是一道神duliu题= = 出题人的题解传送门 出题人的题解还是讲得很明白的 1.关于$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m ...
- Luogu 4240:毒瘤之神的考验
传送门 Sol 分开考虑 \(\varphi(ij)\) 中 \(ij\) 的质因子 那么 \[\varphi(ij)=\frac{\varphi(i)\varphi(j)gcd(i,j)}{\var ...
随机推荐
- 【数据结构与算法Python版学习笔记】树——利用二叉堆实现优先级队列
概念 队列有一个重要的变体,叫作优先级队列. 和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的. 优先级最高的元素在最前,优先级最低的元素在最后. 实现优先级队列的经典方法是使 ...
- Convolutional Neural Network-week2编程题2(Residual Networks)
1. Residual Networks(残差网络) 残差网络 就是为了解决深网络的难以训练的问题的. In this assignment, you will: Implement the basi ...
- 面试不再慌,终于有人把TCP讲明白了。。。
前言 TCP(Transmission Control Protocol,传输控制协议) 是计算机网络的的重要组成部分,也是网络编程的重要内容,还有我们平时接触最多的 HTTP 也是基于 TCP 实现 ...
- webpack基础以及webpack中babel的配置
webpack 安装 npm 初始化,控制台输入 npm init -y webpack 安装 npm i webpack webpack-cli -D 新建 webpack.config.js co ...
- 攻防世界 杂项 1.base64÷4
666C61677B45333342374644384133423834314341393639394544444241323442363041417D 根据题目base64÷4得base16 在线工 ...
- 21.7.24 test
\(NOIP\) 模拟赛 考差了. T1签到题.注意存在字符串长度为0,不能直接模.\(100\rightarrow0\) 代码: #include<bits/stdc++.h> usin ...
- 【数据结构&算法】04-线性表
目录 前言 线性表的定义 线性表的数据类型&操作 线性表操作 数据类型定义 复杂操作 线性表的顺序存储结构 顺序存储结构的定义 顺序存储方式 数据长度和线性表长度的区别 地址的计算方法 顺序存 ...
- Redis 客户端重试指南
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可. 在互联网服务中,特别是在云环境下,网络及硬件环境复杂,所有应用程序都可能遇到暂时性故障.暂时性故障包括瞬时的网络抖动,服务暂时不可 ...
- Node.js躬行记(14)——压力测试
公司有个匿名聊天的常规H5界面,运营向做一次 50W 的推送,为了能配合她的计划,需要对该界面做一次压力测试. 一.JMeter 压测工具选择了JMeter,这是Apache的一个项目,它是用Java ...
- 彻底掌握 Commonjs 和 Es Module
目录 Commonjs commonjs 实现原理 require 文件加载流程 require 模块引入与处理 require 加载原理 require 避免重复加载 require 避免循环引用 ...