• LOJ#2476. 「2018 集训队互测 Day 3」蒜头的奖杯


    给定n个长度为6的序列(A,B,C,D,E,F),求:

    [sum_{i=1}^nsum_{j=1}^nsum_{k=1}^nA_iB_jC_kD_{gcd(i,j)}E_{gcd(i,k)}F_{gcd(j,k)} ]


    首先令(D,E,F)卷上(mu)变成(D',E',F'),莫反一下:

    [sum_{i,j,k}A_iB_jC_ksum_{a|i,a|j}D'_asum_{b|i,b|k}E'_bsum_{c|j,c|k}F'_c\ sum_{a,b,c}D'_aE'_bF'_csum_{ ext{lcm}(a,b)|i}A_isum_{ ext{lcm}(a,c)|j}B_jsum_{ ext{lcm}(b,c)|k}C_k ]

    则我们令(A'_i=sum_{i|d}A_i),B和C做同样的变换。

    则就变成:

    [sum_{a,b,c}D'_aE'_bF'_cA'_{ ext{lcm}(a,b)}B'_{ ext{lcm}(a,c)}C'_{ ext{lcm}(b,c)} ]

    那么这就是经典三元环计数了,1e5下边有m=2625630这么多条边。

    复杂度是(O(msqrt m))的,但是他能过。

    然后是正解。

    (f(A)=A*mu,g(A)_i=sum_{i|x}A_x),则:

    [egin{aligned} &sum_k C_ksum_isum_jA_iB_jD_{gcd(i,j)}sum_{p|(i,k)}f(E)_psum_{q|(j,k)}f(F)_q\ =&sum_{ ext{lcm}(p,q)le n}f(E)_pf(F)_qg(C)_{ ext{lcm}(p,q)}sum_{iple n}sum_{jqle n}A_{ip}B_{jq}D_{gcd(ip,jq)}\ =&sum_dsum_{gcd(p,q)=1,pqlefrac nd}f(E)_{pd}f(F)_{qd}g(C)_{pqd}sum_{iple frac nd}sum_{jqle frac nd}A_{ipd}B_{jqd}D_{dgcd(ip,jq)} end{aligned} ]

    考虑对于每一个d我们单独做,记(P_i=f(E)_{id},Q_i=f(F)_{id},R_i=g(C)_{id},S_i=A_{id},T_i=B_{id},W_i=D_{id},m=frac nd)

    则可以得到:(sum_{gcd(x,y)=1,xyle m}P_xQ_yR_{xy}sum_{ixle m}sum_{jyle m}S_{ix}T_{jy}W_{gcd(ix,jy)})

    考虑先看后面的式子:

    [egin{aligned} &sum_{ixle m}sum_{jyle m}S_{ix}T_{jy}W_{gcd(ix,jy)}\ =&sum_{jyle m}T_{jy}sum_{d|jy}f(W)_dsum_{d|ix,ixle m}S_{ix}\ =&sum_{y|z}T_{z}sum_{d|z}f(W)_dsum_{d|r}S_{r}[x|r] end{aligned} ]

    可以注意到,后面这一部分完全跟y没关系!也就是说我们只要知道x即可,我们考虑枚举x和y中比较小的那一个,则取值范围只有根号,可以预处理一发,就把后面的那一部分处理出来,然后枚举y,再枚举y的倍数求个和即可。

    好,看看单次复杂度是多少。

    首先分析x的预处理的部分,每一次预处理都要花(O(mlog log m))的时间,x会枚举(sqrt m)次,因此复杂度是(O(msqrt mlog log m))

    考虑每一个y出现了多少次,对于小于等于根号m的,出现了y次,这一部分复杂度是:(sum_{i=1}^{sqrt m}ifrac mi=msqrt m)

    对于大于根号m的,出现了(frac mi)次,那复杂度就是:(sum_{i=sqrt m}^m(frac mi)^2),积分一下可以得到:(m^2(frac 1{sqrt m}-frac 1m)=msqrt m)

    因此这一部分不足以成为复杂度瓶颈。

    然后对于所有d求个和,复杂度是:(sum_{d=1}^n(frac nd)^{1.5}loglog n=n^{1.5}loglog n)

  • 相关阅读:
    unity的#pragma strict,#pragma downcast等指令分享
    Unity3d 添加多相机后编译警告
    Invoke计时器
    unity3d UI自动适合屏幕分辨率
    实现卷轴效果的脚本
    .unity3d格式的导出与加载
    Linux 网络编程
    姿态解算基本完成,程序编写笔记
    验证网络上四元数的正确性
    2440 模拟IIC 可以读取 L3G4200D ,ADXL345
  • 原文地址:https://www.cnblogs.com/xgcxgc/p/13322574.html
Copyright © 2020-2023  润新知