1 条题解

  • 0
    @ 2026-9-3 11:05:29

    题解

    思路

    一对数是否为坏对只取决于它们的最大公约数 gg:当且仅当数组中存在一个出现过的数整除 gg,这对数是坏对。

    做法

    记 cxc_x 为值 xx 的出现次数,sd=∑d∣xcxs_d=\sum_{d\mid x}c_x。那么最大公约数是 dd 的倍数的数对共有 (sd2)\binom{s_d}{2} 对。按 dd 从大到小,用

    ed=(sd2)−∑j≥2ejde_d=\binom{s_d}{2}-\sum_{j\ge2}e_{jd}

    得到最大公约数恰为 dd 的数对数。

    再从每个出现过的值 xx 出发,标记它的所有倍数。未被标记的 dd 不含任何出现过的约数,因此把对应的 ede_d 加入答案。

    全质数子任务中,只有两个数相同才会被该质数同时整除,答案为总数对减去每种质数内部的数对。小规模则可枚举数对及见证元素。

    独立复核实现使用莫比乌斯反演:eg=∑dμ(d)(sgd2)e_g=\sum_d\mu(d)\binom{s_{gd}}2。

    复杂度

    每组时间复杂度 O(nlog⁡n)O(n\log n),空间复杂度 O(n)O(n)。

    • 1

    信息

    ID
    1417
    时间
    2000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者