ARC121D
题面
给定\(n(\le 5*10^3)\)个数,每次可以选\(1\sim 2\)个数,记\(s_i\)为他们的和,将数选完后,记\(X=\max\{s_i\},Y=\min\{s_i\}\),需要求出最小化的\(X-Y\)
题解
人类智慧题。。
先考虑如果每次只能选两个怎么办,那么就是一个贪心题:把序列排序之后,每次选择最大和最小的组成一对。因为如果最大的选的不是最小的,那么就一定会更大(废话)。
然后考虑可以选一个的情况,其实就是往序列里加了几个\(0\),然后枚举\(0\)的个数就没了。。。
启发
- 选择一个或两个其实可以转化为加入一些贡献为0的然后必须要选两个。