1 条题解

  • 0
    @ 2026-4-4 18:14:14

    A. 最终结果 详细题解

    核心结论

    整个数组的平均值是不变量,最终剩下的唯一数字一定等于初始数组的平均值。

    因此答案只有一句话: 如果数组总和的平均值等于 xx,输出 YES\text{YES};否则输出 NO\text{NO}


    严格证明

    设当前数组长度为 LL,总和为 SS,平均值为 SL\dfrac{S}{L}

    执行一次操作:

    1. 选择 kk,把数组分成 kk等长子序列,每个子序列长度为 Lk\dfrac{L}{k}
    2. 设第 ii 个子序列和为 sis_i,平均值为 siL/k\dfrac{s_i}{L/k}
    3. 新数组总和:
    $$\sum_{i=1}^k \frac{s_i}{L/k} = \frac{k}{L} \sum_{i=1}^k s_i = \frac{k}{L} \cdot S $$
    1. 新数组长度为 kk,新平均值:
    kLSk=SL\frac{\dfrac{k}{L} \cdot S}{k} = \frac{S}{L}

    平均值永远不变 所以最后剩下的数字只能是初始平均值


    解法步骤

    1. 计算数组总和 sum\text{sum}
    2. 判断 sumn=x\dfrac{\text{sum}}{n} = x 是否成立。
    3. 成立输出 YES\text{YES},否则 NO\text{NO}

    为什么不用浮点?

    直接用 (double)sum / n == x 可能出现浮点精度误差

    最安全的判断方式:

    sum=x×n\boldsymbol{sum = x \times n}

    样例解释

    1. [3][3]sum=3\text{sum}=33=3×13=3\times1YES\text{YES}
    2. [7,11,2,5][7,11,2,5]sum=25\text{sum}=25259×425 \neq 9\times4NO\text{NO}
    3. [1,9,14,12,10,8][1,9,14,12,10,8]sum=54\text{sum}=5454=9×654=9\times6YES\text{YES}
    4. 1010sum=100\text{sum}=100100=10×10100=10\times10YES\text{YES}

    时间复杂度

    O(n)O(n) 每组测试用例,完全满足 t500,n100t \le 500, n \le 100


    总结

    这道题是披着复杂操作外衣的简单数学题 唯一不变量就是数组平均值,直接判断 sum=n×x\boldsymbol{sum = n \times x} 即可。

    • 1

    信息

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