从 [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 ...
随机推荐
- 【UE4 材质】一些小功能
利用材质实现物体自转 物体外轮廓高亮 使用postprocess+custom depth(防遮挡) https://www.tomlooman.com/soft-outlines-in-ue4/ h ...
- 【数据结构 C++】排序——冒泡、插入、选择、希尔、归并、快排、堆排序
LeetCode 912. 排序数组 给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = ...
- centos7 配置ftp服务器搭建(匿名访问,以及本地登录)
大家好,今天来给大家分享一个基于centos 7的ftp服务器搭建 实现功能:匿名访问,本地登录 查看系统版本: [root@localhost ~]# cat /etc/redhat-release ...
- Noip模拟21(持续翻车)2021.7.20
读题总是读错是不是没救了... T1 Median 中位数:按顺序排列的一组数据中居于中间位置的数. 能用上的高亮符号都用上了... 当时忘了就离谱.... 理解什么是中位数(真是个憨憨)后就可以开始 ...
- 热身训练2 The All-purpose Zero
The All-purpose Zero 简要题意: 长度为n的数组,每个数字为S[i],$0$是一种很神奇的数字,你想要的,它都可以变! 问这个序列的最长上升子序列长度为多少? 分析: 我们将除了 ...
- 常用Java API:Calendar日期类
摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经废弃了,所以本文将详细介绍Calendar类. Calendar ...
- 『学了就忘』Linux基础 — 5、使用VMware创建虚拟机
目录 1.在VMware中创建虚拟机 (1)点击[创建新的虚拟机]. (2)选择系统安装方式 (3)选择客户机操作系统 (4)自定义虚拟机的名称和安装位置. (5)指定系统硬盘容量 (6)完成创建 2 ...
- 重建二叉树 牛客网 剑指Offer
重建二叉树 牛客网 剑指Offer 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3, ...
- 2021CCPC华为云挑战赛 部分题题解
CDN流量调度问题 题看了没多久就看出来是\(DP\)的题,然后就设了状态\(f[i][j]\)表示到前\(i\)个点时已经用了\(j\)个节点的最小总代价,结果发现转移时\(O(nm^2)\),但这 ...
- hdu 1027 Ignatius and the Princess II(正、逆康托)
题意: 给N和M. 输出1,2,...,N的第M大全排列. 思路: 将M逆康托,求出a1,a2,...aN. 看代码. 代码: int const MAXM=10000; int fac[15]; i ...