洛谷题面传送门

先扯些别的。

2021 年 7 月的某一天,我和 ycx 对话:

  • tzc:你做过哪些名字里带“毒瘤”的题目,我做过一道名副其实的毒瘤题就叫毒瘤,是个虚树+dp
  • ycx:还有毒瘤之神的考验
  • tzc:???那是个啥?
  • ycx:一道数论水题

然后我便做到了这个题,然后却发现它一点也不水……

跑题了跑题了

首先我们显然不可能硬着头皮算 \(\varphi(ij)\),肯定要想办法将 \(\varphi(ij)\) 中的 \(i,j\) 独立开来。通过这题的套路可知 \(\varphi(ij)=\dfrac{\varphi(i)\varphi(j)\gcd(i,j)}{\varphi(\gcd(i,j))}\),于是下面我们就可以开始推式子了:

\[\begin{aligned}
ans&=\sum\limits_{i=1}^n\sum\limits_{j=1}^m\varphi(ij)\\
&=\sum\limits_{i=1}^n\sum\limits_{j=1}^m\dfrac{\varphi(i)\varphi(j)\gcd(i,j)}{\varphi(\gcd(i,j))}\\
&=\sum\limits_{d=1}^{\min(n,m)}\dfrac{d}{\varphi(d)}\sum\limits_{d\mid i}\sum\limits_{d\mid j}\varphi(i)\varphi(j)[\gcd(i,j)=d]\\
&=\sum\limits_{d=1}^{\min(n,m)}\dfrac{d}{\varphi(d)}\sum\limits_{i=1}^{n/d}\sum\limits_{j=1}^{m/d}\varphi(id)\varphi(jd)[i\perp j]\\
&=\sum\limits_{d=1}^{\min(n,m)}\dfrac{d}{\varphi(d)}\sum\limits_{p=1}^{\min(n,m)/d}\mu(p)\sum\limits_{i=1}^{n/dp}\sum\limits_{j=1}^{m/dp}\varphi(idp)\varphi(jdp)
\end{aligned}
\]

如果我们记 \(f(n)=\sum\limits_{d\mid n}\dfrac{d}{\varphi(d)}·\mu(\dfrac{n}{d})\),\(S(n,m)=\sum\limits_{i=1}^m\varphi(ni)\),那么

\[\begin{aligned}
ans&=\sum\limits_{T=1}^{\min(n,m)}f(T)S(T,\lfloor\dfrac{n}{T}\rfloor)S(T,\lfloor\dfrac{m}{T}\rfloor)
\end{aligned}
\]

\(f\) 显然可以调和级数地求出,有用的 \(S(n,m)\) 的个数也是 \(n\ln n\) 级别的,因此暴力计算上式可实现 \(Tn+n\ln n\) 的复杂度,无法通过。直接整除分块看起来不太容易的亚子,这就使我们陷入了一个比较尴尬的局面。但是一个非常直观的 observation 是当 \(T\) 比较大时,可能的 \((\lfloor\dfrac{n}{T}\rfloor,\lfloor\dfrac{m}{T}\rfloor)\) 组成的二元组并不是特别多。因此考虑从这个角度入手。记 \(B=316\),对于 \(T\le B\),我们暴力计算即可,对于 \(T>B\),写个程序算一下可以发现 \(\sum\limits_{i=317}^{10^5}\lfloor\dfrac{10^5}{i}\rfloor^2\) 只有大概 \(3\times 10^7\) 的样子,因此这部分我们就预处理时,暴力枚举所有可能的 \((\lfloor\dfrac{n}{T}\rfloor,\lfloor\dfrac{m}{T}\rfloor)\),然后前缀和算一下贡献,这样每次询问整除分块即可求出这部分 \(T\) 的贡献。

时间复杂度 \(T\sqrt{n}+n\sqrt{n}+n\ln n\),可以通过。

const int MAXN=1e5;
const int B=316;
int inv[MAXN+5],pr[MAXN/7+5],prcnt=0,phi[MAXN+5],vis[MAXN+5],f[MAXN+5],mu[MAXN+5];
vector<int> s[MAXN+5],ss[B+4][B+4];
void init(){
for(int i=(inv[0]=inv[1]=1)+1;i<=MAXN;i++) inv[i]=1ll*inv[MOD%i]*(MOD-MOD/i)%MOD;
phi[1]=mu[1]=1;
for(int i=2;i<=MAXN;i++){
if(!vis[i]) phi[i]=i-1,mu[i]=-1,pr[++prcnt]=i;
for(int j=1;j<=prcnt&&pr[j]*i<=MAXN;j++){
vis[pr[j]*i]=1;
if(i%pr[j]==0){phi[i*pr[j]]=phi[i]*pr[j];break;}
phi[i*pr[j]]=phi[i]*phi[pr[j]];mu[i*pr[j]]=-mu[i];
}
}
for(int i=1;i<=MAXN;i++) for(int j=i;j<=MAXN;j+=i)
f[j]=(0ll+f[j]+1ll*i*inv[phi[i]]%MOD*mu[j/i]%MOD+MOD)%MOD;
for(int i=1;i<=MAXN;i++){
s[i].resize(MAXN/i+1);
for(int j=1;j<=MAXN/i;j++) s[i][j]=(s[i][j-1]+phi[i*j])%MOD;
}
for(int i=1;i<=B+1;i++) for(int j=1;j<=B+1;j++){
ss[i][j].pb(0);int sum=0;
for(int k=B+1;k<=MAXN;k++){
if(k*i>MAXN||k*j>MAXN) break;
sum=(sum+1ll*f[k]*s[k][i]%MOD*s[k][j])%MOD;
ss[i][j].pb(sum);
}
}
}
int main(){
init();int qu;scanf("%d",&qu);
while(qu--){
int n,m;scanf("%d%d",&n,&m);int res=0;
for(int i=1;i<=B;i++) res=(res+1ll*f[i]*s[i][n/i]%MOD*s[i][m/i])%MOD;
for(int l=B+1,r;l<=min(n,m);l=r+1){
r=INF;
if(n/l) chkmin(r,n/(n/l));
if(m/l) chkmin(r,m/(m/l));
res=(0ll+res+ss[n/l][m/l][r-B]-ss[n/l][m/l][l-B-1]+MOD)%MOD;
}
printf("%d\n",res);
}
return 0;
}

洛谷 P4240 - 毒瘤之神的考验(数论+复杂度平衡)的更多相关文章

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

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

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

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

  3. P4240 毒瘤之神的考验

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

  4. 从 [P4240 毒瘤之神的考验] 谈 OI 中的美学

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

  5. 洛谷P1774 最接近神的人_NOI导刊2010提高(02)(求逆序对)

    To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的 ...

  6. [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)

    [NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...

  7. 洛谷P2783 有机化学之神偶尔会作弊

    题目传送门 啦啦啦,发个文纪念一下第一道在洛谷上A的黑题,一次性就过真是无比舒服-(虽然某些大佬说这题有点水……)题目其实思路不难,Tarjan缩点+LCA,不过因为是无向边,所以在Tarjan的时候 ...

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

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

  9. 洛谷 P6783 - [Ynoi2008] rrusq(KDT+势能均摊+根号平衡)

    洛谷题面传送门 首先显然原问题严格强于区间数颜色,因此考虑将询问离线下来然后用某些根号级别复杂度的数据结构.按照数颜色题目的套路,我们肯定要对于每种颜色维护一个前驱 \(pre\),那么答案可写作 \ ...

随机推荐

  1. 虚拟机研究系列-「GC本质底层机制」SafePoint的深入分析和底层原理探究指南

    SafePoint前提介绍 在高度优化的现代JVM里,Safepoint有几种不同的用法.GC safepoint是最常见.大家听说得最多的,但还有deoptimization safepoint也很 ...

  2. Spark分区器浅析

    分区器作用:决定该数据在哪个分区 概览: 仅仅只有pairRDD才可能持有分区器,普通RDD的分区器为None 在分区器为None时RDD分区一般继承至父RDD分区 初始RDD分区数: 由集合创建,R ...

  3. javascript运算符和表达式

    1.表达式的概念 由运算符连接操作组成的式子,不管式子有多长,最终都是一个值. 2.算术运算符 加+ 减- 乘* 除/ 取模% 负数- 自增++ 自减-- 3.比较运算符 等于==  严格等于=== ...

  4. Linux信号处理编程

    01. 学习目标 了解信号中的基本概念 熟练使用信号相关的函数 了解内核中的阻塞信号集和未决信号集作用 熟悉信号集操作相关函数 熟练使用信号捕捉函数signal 熟练使用信号捕捉函数sigaction ...

  5. centos7 配置ftp服务器搭建(匿名访问,以及本地登录)

    大家好,今天来给大家分享一个基于centos 7的ftp服务器搭建 实现功能:匿名访问,本地登录 查看系统版本: [root@localhost ~]# cat /etc/redhat-release ...

  6. Unity 3D手游对不同分辨率屏幕的UI自适应

    目前安卓手机的屏幕大小各异,没有统一的标准,因此用Unity 3D制作的手游需要做好对不同分辨率屏幕的UI自适应,否则就会出现UI大小不一和位置错位等问题. 我们的项目在开发时的参照分辨率(Refer ...

  7. 使用flink实现一个简单的wordcount

    使用flink实现一个简单的wordcount 一.背景 二.需求 三.前置条件 1.jdk版本要求 2.maven版本要求 四.实现步骤 1.创建 flink 项目 2.编写程序步骤 1.创建Str ...

  8. Noip模拟74 2021.10.11

    T1 自然数 考场上当我发现我的做法可能要打线段树的时候,以为自己百分之百是考虑麻烦了 但还是打了,还过掉了所有的样例,于是十分自信的就交了 正解还真是线段树,真就第一题数据结构 但是包括自己造的小样 ...

  9. 利用DMA实现采样数据的直接搬运存储

    尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作 ...

  10. lamp 架构的理解

    1,lamp架构下的求情过程如下: 2,httpd服务器连接php服务器的三种方式 3,php和mysql的连接