zoukankan      html  css  js  c++  java
  • BZOJ 3944 Sum 解题报告

    我们考虑令:

    [F_n = sum_{d|n}varphi(d) ]

    那么,有:

    [sum_{i=1}^{n}F_i = sum_{i=1}^{n}sum_{d|i}varphi(d) = sum_{d=1}^{n}varphi(d) imes lfloorfrac{n}{d} floor = sum_{d=1}^{n}sum_{i=1}^{lfloorfrac{n}{d} floor}varphi(i) ]

    为什么最后一步可以这么转化呢?我们考虑一个 (i) ,论 (varphi(i)) 对答案的贡献:

    在最后一个等式的左边,(varphi(i)) 对答案的贡献为:(lfloorfrac{n}{i} floor),这很显然。

    在等式的右边,当 (i imes d le n) 的时候,(varphi(i))才会对答案产生贡献,所以对于每一个 (dlelfloorfrac{n}{i} floor)(varphi(i))都会对答案产生贡献,所以在等式右边,(varphi(i)) 对答案的贡献也为:(lfloorfrac{n}{i} floor)

    于是等式是成立的。

    那么就有:

    [sum_{i=1}^{n}varphi(i) = sum_{i=1}^{n}sum_{d|i}varphi(d) - sum_{d=2}^{n}sum_{i=1}^{lfloorfrac{n}{d} floor}varphi(i) ]

    还有:

    [sum_{i=1}^{n}sum_{d|i}varphi(d) = sum_{i=1}^{n}i = frac{n imes(n+1)}{2} ]

    所以:

    [sum_{i=1}^{n}varphi(i) = frac{n imes(n+1)}{2} - sum_{d=2}^{n}sum_{i=1}^{lfloorfrac{n}{d} floor}varphi(i) ]

    所以算(sum_{i=1}^{n}varphi(i))的时候就可以记忆化搜索啦。

    据说,我们把 (N^{frac{2}{3}}) 之内的答案先筛出来,然后再进行记忆化搜索,复杂度就是 (O(N^{frac{2}{3}}))的了。

    然后同理,有:

    [sum_{i=1}^{n}mu(i) = 1 - sum_{d=2}^{n}sum_{i=1}^{lfloorfrac{n}{d} floor}mu(i) ]

    时空复杂度均为 (O(N^{frac{2}{3}}))

    毕竟 Gromah 这么弱,不可能自己推出来这些东西。

    所以 Gromah 是参考了其他地方的博客的,比如:

    这个博客

  • 相关阅读:
    linux设备模型
    dma
    POSIX thread
    Network: IP QoS
    TCP: sliding window of flow control
    TCPIP: UDP/TCP checksum
    Hebrew: Learning Resources
    Vivado: Uninstall Vivado on ubuntu/linux
    HLS: vivado_hls compile fail, csim and csyn error, no ip generated for udpLoopback and toe
    HLS: High-Level Synthesis Operators
  • 原文地址:https://www.cnblogs.com/gromah/p/4421254.html
Copyright © 2011-2022 走看看