1 条题解

  • 0
    @ 2026-8-23 8:01:46

    题解

    思路推导

    直接枚举三个下标需要 O(N3)O(N^3);枚举 i,ji,j 后,kk 至多有一个候选值,可以降到 O(N2)O(N^2)。满分范围中 NN 达到 10610^6,还需要把固定 ii 后的二元一次不定方程在常数时间内计数。

    固定 ii,令 Y=XAiY=X-Ai。问题变为统计

    Bj+Ck=Y,1j,kN.Bj+Ck=Y,\qquad 1\le j,k\le N.

    它的所有整数解构成一个等差参数族,因此只要求出参数的合法整数区间即可。

    做法

    g=gcd(B,C)g=\gcd(B,C)。若 gYg\nmid Y,当前 ii 没有贡献。否则同时除以 gg

    b=B/g,c=C/g,y=Y/g,b=B/g,\quad c=C/g,\quad y=Y/g,

    此时 gcd(b,c)=1\gcd(b,c)=1。用扩展欧几里得求 bb 在模 cc 意义下的逆元,得到满足 bj0y(modc)bj_0\equiv y\pmod c 的一个 j0j_0,再令

    k0=ybj0c.k_0=\frac{y-bj_0}{c}.

    全部整数解可以写成

    j=j0+tc,k=k0tb,j=j_0+tc,\qquad k=k_0-tb,

    其中 tt 为整数。把 1jN1\le j\le N1kN1\le k\le N 分别转成 tt 的上下界,两个闭区间求交后即可得到当前 ii 的解数。枚举所有 ii 并累加。

    正确性证明

    gYg\nmid Y 时,线性组合 Bj+CkBj+Ck 必为 gg 的倍数,故无解。当 gYg\mid Y 时,约分后的 b,cb,c 互质,模方程唯一确定 jj 关于 cc 的剩余类,所以 (j0,k0)(j_0,k_0) 是一个整数解。

    二元一次不定方程的任意两个解之差满足 bΔj+cΔk=0b\Delta j+c\Delta k=0。由 b,cb,c 互质可知必存在整数 tt,使得 Δj=tc\Delta j=tcΔk=tb\Delta k=-tb。因此上述参数式不遗漏也不重复任何整数解。

    最后,算法仅统计同时满足 1j,kN1\le j,k\le N 的参数 tt,所以固定 ii 的贡献恰好正确。对所有 1iN1\le i\le N 求和后,每个合法三元组按其唯一的 ii 被统计一次,答案正确。

    复杂度分析

    扩展欧几里得耗时 O(logmax(B,C))O(\log\max(B,C));之后每个 ii 只做常数次整数运算。总时间复杂度为 O(N+logmax(B,C))O(N+\log\max(B,C)),空间复杂度为 O(1)O(1)

    • 1

    信息

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