zoukankan      html  css  js  c++  java
  • loj6686

    (nleq 10^{30}),又是三次根,很容易想到枚举三次根然后杜教筛啥的?考虑枚举三次根,那么满足三次根等于它的 (i) 显然是一个区间,转化为前缀和,等价地就是要求对 (r,c)(sumlimits_{i=1}^rgcd(i,c))。这个好久没推莫反了,写个过程:

    [egin{aligned}ans&=sum_{jmid c}jsum_{i=1}^{leftlfloorfrac rj ight floor}left[gcd!left(i,dfrac cj ight)=1 ight]\ &=sum_{jmid c}jsum_{i=1}^{leftlfloorfrac rj ight floor}sum_{kmid i,kmid frac cj}mu(k)\ &=sum_{jmid c}jsum_{kmid frac cj}mu(k)leftlfloordfrac r{jk} ight floor\ &=sum_{omid c}leftlfloordfrac ro ight floorsum_{jmid o}jmu!left(dfrac oj ight)\ &=sum_{omid c}leftlfloordfrac ro ight floorvarphi(o) end{aligned} ]

    这东西带个整除,并不能化成积性函数之类的样子,或者说连 (sum) 都去不掉。那么前面再套个 (sum) 枚举 (10^{10}) 个哪儿吃得消?

    但是我们看,对 (c=i),要求的两个 (r_1=(i+1)^3-1,r_2=i^3-1)(r_1=i^3+3i^2+3i+1-1=i^3+3i^2+3i),恰好是 (i) 的倍数,而 (omid i),所以 (dfrac ro) 是个整数,整除号可以直接去掉。就变成了

    [sum_{omid i}dfrac{i^3+3i^2+3i}ovarphi(o) ]

    每项单独拿出来,以三方项为例:

    [sum_{omid i}dfrac{i^3}ovarphi(o)=i^2sum_{omid i}dfrac iovarphi(o)=(mathrm{id}_2 imes(mathrm{id}*varphi))(i) ]

    这样就是个积性函数的形式了(平方和一次项的系数 (3) 可以根据 (sum) 线性性拆出来,然后类似),你暴力 min25 我不拦你,然而它是可杜教筛的,这个下面讲。现在来看看 (r_2) 怎么破,它并不是 (i) 的倍数。但是发现 (i^3)(i) 的倍数,而再减去个 (1),小学二年级学生都知道 (leftlfloordfrac{i^3-1}o ight floor=dfrac{i^3}o-1)。前者照样搞,后者的话就是个

    [sum_{omid i}varphi(o)=i ]

    前缀和的话贼几把简单。

    下面我们来考虑 (mathrm{id_?} imes(mathrm{id}*varphi)) 怎么杜教筛。(mathrm{id_?}) 是完全积性,可以提公因式,于是我们只需要杜教筛 (mathrm{id}*varphi)。有 (varphi),给它卷上个 (1) 得到 ((mathrm{id}*varphi)*1=mathrm{id}*mathrm{id})。稍微想一下发现等于 (mathrm{id} imes mathrm d)。把公因式搞进去得到 ((mathrm{id}_? imes(mathrm{id}*varphi))*mathrm{id}_?=mathrm{id}_{?+1} imesmathrm d)(mathrm{id}_?) 对低次显然是有前缀和通项的,那么 RHS 这玩意可杜教筛吗?稍微推推:

    [sumlimits_{i=1}^ni^xsum_{jmid i}1=sum_j j^xf!left(leftlfloordfrac nj ight floor ight) ]

    其中 (f)(mathrm{id}_x) 的前缀和。那么显然可以整除分块根号算出来。根据杜教筛复杂度分析,只需要预处理然后即可做到 2/3 方复杂度,所以是可杜教筛的。那么一大部分就做出来了。(其实根本就不用对三方项做,因为前缀和抵掉了,wtm 还傻乎乎的也求了出来)

    还有一个 van tea:(r_2) 实际上等于 (min!left(n,i^3-1 ight))。但注意到仅对最大的那个需要考虑,于是单独按照 (sumlimits_{omid c}leftlfloordfrac ro ight floorvarphi(o)) 来算。直接枚举因数是根号的,但是还要考虑到对很大的数求单点 (varphi) 值的问题。直接分解质因数求单点值的话单点是根号的,根据杜教筛复杂度分析是 3/4 方的(虽然杜教筛是整除分块关键点,而此处是因数除法,但是由于杜教筛复杂度分析的时候本来就是用连续情况去近似,所以是一样的),预处理可到 2/3 方。

    于是这题就做完了,好毒瘤一题。常数巨大,但 loj 神机还是让我过了。代码巨丑:code

    珍爱生命,远离抄袭!
  • 相关阅读:
    JQuery 获取touchstart,touchmove,touchend 坐标
    js获取可视区大小和页面大小的兼容性写法
    Asp.net MVC4.0自定义Html辅助方法
    无废话版本-Asp.net MVC4.0 Rasor的基本用法
    IE浏览器 下面的文本框,获得焦点后无法输入内容
    C# Log4Net配置
    C#中 ? 和?? 的用法
    工作中的一些问题总结
    JsRender系列-11
    JsRender系列demo-10
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-loj6686.html
Copyright © 2011-2022 走看看