ARC121D

题面

​ 给定\(n(\le 5*10^3)\)个数,每次可以选\(1\sim 2\)个数,记\(s_i\)为他们的和,将数选完后,记\(X=\max\{s_i\},Y=\min\{s_i\}\),需要求出最小化的\(X-Y\)

题解

​ 人类智慧题。。

​ 先考虑如果每次只能选两个怎么办,那么就是一个贪心题:把序列排序之后,每次选择最大和最小的组成一对。因为如果最大的选的不是最小的,那么就一定会更大(废话)。

​ 然后考虑可以选一个的情况,其实就是往序列里加了几个\(0\),然后枚举\(0\)的个数就没了。。。

启发

  • 选择一个或两个其实可以转化为加入一些贡献为0的然后必须要选两个。
posted @ 2022-02-17 17:18  qwq_123  阅读(15)  评论(0编辑  收藏  举报