zoukankan      html  css  js  c++  java
  • [探究] $mu$函数的性质应用

    参考的神仙An_Account的blog,膜一下。

    其实就是一类反演问题可以用(mu)函数的性质直接爆算出来。

    然后其实性质就是一个代换:

    [sum_{d|n}mu(d)=[n=1] ]

    问题一:求

    [sum_{i=1}^nsum_{j=1}^m[i perp j] ]

    ……然而其实就是

    [sum_{i=1}^nsum_{j=1}^msum_{d|gcd(i,j)}mu(d) ]

    考虑(d|gcd(i,j))就是(d|i,d|j),于是可以枚举(d)

    [sum_{d=1}^{min(n,m)}mu(d)cdot lfloorfrac{n}{d} floorcdot lfloorfrac{m}{d} floor ]

    这东西就可以直接分块。

    问题二:求

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

    然而根据一个定理:

    [gcd(i,j)=kLongrightarrowgcd(frac{i}{k},frac{j}{k})=1 ]

    于是就变成了:

    [sum_{i=1}^{lfloorfrac{n}{k} floor}sum_{j=1}^{lfloorfrac{m}{k} floor}[i perp j] ]

    问题三:求

    [sum_{i=1}^nsum_{j=1}^m[gcd(i,j)=k],kin m{Prime} ]

    我们考虑现在的柿子其实长这样:

    [sum_{kin m{Prime}}sum_{d=1}^{min(lfloorfrac{n}{k} floor,lfloorfrac{m}{k} floor)}mu(d)cdot lfloorfrac{n}{kd} floorcdot lfloorfrac{m}{kd} floor ]

    一个思想就是不断把重复求和的东西提到前面去。我们发现似乎带有(kd)的几项被重复求和,效率很低。同时因为(O(kd)=O(n)),所以改成先枚举(kd):

    [egin{aligned}p=kd\ sum_{p=1}^{min{(n,m)}}end{aligned}lfloorfrac{n}{p} floorcdot lfloorfrac{m}{p} floorsum_{d|p}mu (d) ]

    然后显然后面的那个(sum)是可以预处理的,于是就还是(O(sqrt n))的分块。

    后面的择日应该会学一学= =?

  • 相关阅读:
    Asp.Net生命周期的详解
    Asp.Net生命周期的详解
    Asp.Net WebForm生命周期的详解
    【原创】Ajax的用法总结
    【】Ajax的用法总结
    【】Ajax的用法总结
    Indexing Sensor Data
    【】Ajax的用法总结
    25句张小娴经典爱情语录,句句穿心!
    25句张小娴经典爱情语录,句句穿心!
  • 原文地址:https://www.cnblogs.com/pks-t/p/11748702.html
Copyright © 2011-2022 走看看