zoukankan      html  css  js  c++  java
  • 快乐的一天从AC开始 | 20210629 | P2257

    题目链接

    AC代码

    看到题面想到了莫比乌斯反演模板题,即求(sum_{x = 1}^{N}sum_{y = 1}^{M} [gcd(x, y) = k]),其中(k)为指定常数。

    这题将(k)的取值变为了素数,不过还是按照常规套路推一下式子:

    [egin{aligned} ans &= sum_{p in {P}} sum_{x = 1}^{N} sum_{y = 1}^{M} [gcd(x, y) = p] \ &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} [gcd(x, y) = 1] \ end{aligned} ]

    根据(varepsilon = mu ast 1)有:

    [egin{aligned} ans &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} [gcd(x, y) = 1] \ &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} sum_{d mid gcd(x, y)} mu(d) \ &= sum_{p in {P}} sum_{d} mu(d) sum_{x = 1}^{lfloor frac{N}{p} floor} [d mid x] sum_{y = 1}^{lfloor frac{M}{p} floor} [d mid y] \ &= sum_{p in {P}} sum_{d} mu(d) lfloor frac{N}{pd} floor lfloor frac{M}{pd} floor end{aligned} ]

    到这一步常规套路就推不下去了,然后根据这个式子枚举(p)去算的话铁定会超时。

    (T = pd),有

    [egin{aligned} ans &= sum_{p in {P}} sum_{d} mu(d) lfloor frac{N}{pd} floor lfloor frac{M}{pd} floor \ &= sum_{T} lfloor frac{N}{T} floor lfloor frac{M}{T} floor sum_{t mid T, t in P} mu(frac{T}{t}) end{aligned} ]

    前半部分可以数论分块,后半部分可以线性筛预处理。

    现在就可以(O(N) sim O(sqrt{N}))做了。

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/zengzk/p/14948491.html
Copyright © 2011-2022 走看看