【思维】【组合问题】AT_arc121_d [ARC121D] 1 or 2
其实题意就是:求某些数两两匹配,某些数不匹配后形成序列的最小极差。
由易到难,从最简单的方法想起,我们先考虑某些数不匹配,某些数两两配对的情况。并且假设 。
若只有三个数 ,如果必须要配一对,会有如下三种情况:, 或 , 或 。显然 , 是最优的。如果有 个数呢?我们可以通过调整某些数的配对方法,得到最优解。
根据上文的推导可得:如果有 个数不配对,这 个数一定是前 大的数。(这一部分实际上没有用,甚至在题目范围内是错的,但是能让我们不多想)
那剩下的数必须要配对。其实就是让比较小的值变大,大的值不那么大,即较大的配一个较小的。具体而言,最大的必须配对最小的,次大的必须配对次小的。
证明:现有 ,求极差。, 肯定劣于 ,,还有一种情况是 。将两者用作差法就可以得到 是最优解。
但是以上结论我们只讨论了 时的情况,那岂不是完蛋啦?考虑 为自然数情况如何修补。
我们可以把所有数统一加上 ,使其变为正数。说明结论在实数范围内生效。但是前文的结论就不对了,那不是全完了?不配对的情况就少加了 。但换句话说,不配对不就是和 配对吗?把 也加入原始序列就好了。这样我们抛弃了第一个结论,但也做出来题了。
推出的第一个结论虽然是错的,但是一点用都没有吗?其实也帮助我们推出了正解。很多时候,结论不一定一下推出,不如把过多顾虑丢掉,把对的结论应用到所有情况。