【思维】【组合问题】AT_arc121_d [ARC121D] 1 or 2

其实题意就是:求某些数两两匹配,某些数不匹配后形成序列的最小极差。

由易到难,从最简单的方法想起,我们先考虑某些数不匹配,某些数两两配对的情况。并且假设 ai1a_i \ge 1

若只有三个数 abca\le b\le c,如果必须要配一对,会有如下三种情况:a+ba+bcca+ca+cbbb+c,ab+c,a。显然 a+ba+bcc 是最优的。如果有 nn 个数呢?我们可以通过调整某些数的配对方法,得到最优解。

根据上文的推导可得:如果有 kk 个数不配对,这 kk 个数一定是前 kk 大的数。(这一部分实际上没有用,甚至在题目范围内是错的,但是能让我们不多想)

那剩下的数必须要配对。其实就是让比较小的值变大,大的值不那么大,即较大的配一个较小的。具体而言,最大的必须配对最小的,次大的必须配对次小的。

证明:现有 abcda\le b\le c\le d,求极差。a+ba+bc+dc+d 肯定劣于 a+ca+cb+db+d,还有一种情况是 a+d,b+ca+d,b+c。将两者用作差法就可以得到 a+d,b+ca+d,b+c 是最优解。

但是以上结论我们只讨论了 ai1a_i \ge 1 时的情况,那岂不是完蛋啦?考虑 aia_i 为自然数情况如何修补。

我们可以把所有数统一加上 xx,使其变为正数。说明结论在实数范围内生效。但是前文的结论就不对了,那不是全完了?不配对的情况就少加了 xx。但换句话说,不配对不就是和 xx 配对吗?把 xx 也加入原始序列就好了。这样我们抛弃了第一个结论,但也做出来题了。

推出的第一个结论虽然是错的,但是一点用都没有吗?其实也帮助我们推出了正解。很多时候,结论不一定一下推出,不如把过多顾虑丢掉,把对的结论应用到所有情况。

posted @ 2024-08-01 21:54  cjrqwq  阅读(10)  评论(0)    收藏  举报  来源