这是一道博弈论中的最优策略问题,核心是双方(小红、小紫)在目标相反的情况下,通过贪心选择对自己最有利的元素。

解题思路

  1. 明确目标与操作影响
    • 小红先手,目标是让最终的 x 尽可能小;拿元素时,x += 该元素(因此小红会优先选较小的元素,减少 x 的增加量)。
    • 小紫目标是让最终的 x 尽可能大;拿元素时,x -= 该元素(因此小紫会优先选较小的元素,减少 x 的减少量)。
  2. 贪心策略: 将数组按升序排序(小元素在前),双方轮流取当前最小的元素(小红先取)—— 这样双方都能做出对自己最优的选择。
  3. 计算结果: 小红取排序后索引为偶数(0、2、4…)的元素,小紫取索引为奇数(1、3、5…)的元素;最终 x = 小红取的元素和 - 小紫取的元素和

代码实现(Python)


n = int(input())
a = list(map(int, input().split()))

# 数组升序排序
a.sort()

sum_red = 0   # 小红拿的元素之和
sum_purple = 0  # 小紫拿的元素之和

for i in range(n):
    if i % 2 == 0:
        # 索引为偶数:小红拿
        sum_red += a[i]
    else:
        # 索引为奇数:小紫拿
        sum_purple += a[i]

# 计算最终x的值
print(sum_red - sum_purple)

该方法的时间复杂度为 O(n log n)(主要来自排序),可高效处理 n ≤ 10^5 的数据规模。