1 条题解
-
0
算术练习 详细题解
题目分析
我们有一个初始全为 、长度为 的数组 ,依次执行 次操作: 第 次操作选一个下标 ,执行 。 要求最优选择下标,让最终数组的元素和最大。
核心观察:单元素的操作规律
先看同一个位置被操作 次的结果: 设操作序列为 ,初始值为 :
- 第1次:
- 第2次:
- 第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}$
结论: 对一个位置操作 次后,最终值为:
$$\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} $$我们把每一个 对最终和的贡献提取出来: 的系数只能是 或 !
关键推导
- 总贡献 = 所有 ,其中
- 约束条件:系数为 的 数量,最多有 个
- 原因:数组只有 个位置,每个位置的最后一次操作系数一定是 ,只有非最后一次的操作能取 ,全局最多 个 。
最大化总和的策略
总和公式:
$$\sum_{i=1}^m x_i \times c_i = \sum_{i=1}^m x_i - 2 \times \sum_{(c_i=-1)} x_i $$要最大化这个值:
- 是固定值
- 等价于 最小化
- 即:选绝对值最小的 个 ,把它们的系数设为
解题步骤
对每个测试 case:
- 计算所有 的总和
- 对 数组按绝对值从小到大排序
- 取前 个元素,计算它们的和
- 答案 =
复杂度分析
- 时间:, 为总操作数,排序是核心开销
- 空间:,存储操作数组
- 完全满足题目 数据限制
总结
- 核心:每个 只能贡献 或
- 约束:最多 个
- 最优:选绝对值最小的 个元素取负
- 公式:$\boldsymbol{ans = \sum x - 2\times\sum(最小绝对值的n个元素)}$
- 1
信息
- ID
- 6380
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者