1 条题解

  • 0
    @ 2026-4-5 13:36:24

    算术练习 详细题解

    题目分析

    我们有一个初始全为 00、长度为 nn 的数组 aa,依次执行 mm 次操作: 第 ii 次操作选一个下标 jij_i,执行 aji=xiajia_{j_i} = x_i - a_{j_i}。 要求最优选择下标,让最终数组的元素和最大

    核心观察:单元素的操作规律

    先看同一个位置被操作 kk 次的结果: 设操作序列为 xi1,xi2,,xikx_{i_1},x_{i_2},\dots,x_{i_k},初始值为 00

    • 第1次:xi10=xi1x_{i_1} - 0 = x_{i_1}
    • 第2次:xi2xi1x_{i_2} - x_{i_1}
    • 第3次:$x_{i_3} - (x_{i_2} - x_{i_1}) = x_{i_3} - x_{i_2} + x_{i_1}$
    • 第4次:$x_{i_4} - (x_{i_3} - x_{i_2} + x_{i_1}) = x_{i_4} - x_{i_3} + x_{i_2} - x_{i_1}$

    结论: 对一个位置操作 kk 次后,最终值为:

    $$\begin{cases} \ +x_1 -x_2 +x_3 -x_4 + \dots +x_k & (k为奇数) \\ \ -x_1 +x_2 -x_3 +x_4 - \dots -x_k & (k为偶数) \end{cases} $$

    我们把每一个 xix_i 对最终和的贡献提取出来: xix_i 的系数只能是 +1\boldsymbol{+1}1\boldsymbol{-1}


    关键推导

    1. 总贡献 = 所有 xi×cix_i \times c_i,其中 ci{+1,1}c_i \in \{+1, -1\}
    2. 约束条件:系数为 1-1xix_i 数量,最多有 nn
      • 原因:数组只有 nn 个位置,每个位置的最后一次操作系数一定是 +1+1,只有非最后一次的操作能取 1-1,全局最多 nn1-1

    最大化总和的策略

    总和公式:

    $$\sum_{i=1}^m x_i \times c_i = \sum_{i=1}^m x_i - 2 \times \sum_{(c_i=-1)} x_i $$

    要最大化这个值:

    • xi\sum x_i 是固定值
    • 等价于 最小化 ci=1xi\sum_{c_i=-1} x_i
    • 即:选绝对值最小的 min(n,m)min(n, m)xix_i,把它们的系数设为 1-1

    解题步骤

    对每个测试 case:

    1. 计算所有 xix_i 的总和 totaltotal
    2. xx 数组按绝对值从小到大排序
    3. 取前 k=min(n,m)k = min(n, m) 个元素,计算它们的和 sum_negsum\_neg
    4. 答案 = total2×sum_negtotal - 2 \times sum\_neg

    复杂度分析

    • 时间:O(MlogM)O(M\log M)MM 为总操作数,排序是核心开销
    • 空间:O(M)O(M),存储操作数组
    • 完全满足题目 3×1053\times10^5 数据限制

    总结

    1. 核心:每个 xix_i 只能贡献 +xi+x_ixi-x_i
    2. 约束:最多 nnxi-x_i
    3. 最优:选绝对值最小nn 个元素取负
    4. 公式:$\boldsymbol{ans = \sum x - 2\times\sum(最小绝对值的n个元素)}$
    • 1

    信息

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