С учетом входного массива
x 0 x 1 x 2 ... x 2n
использовать сортировку слиянием для сортировки за O (n log n), чтобы создать отсортированный список
x a 0 x a 1 ... x a 2n
где индексы i указывают на перестановку, которую вы выполнили в начальном списке для получения второго списка.
Я утверждаю, что спаривание, которое дает минимальную максимальную сумму по всем спариваниям, является следующим спариванием:
(x a i , x a 2n-i ) для i = 0, 1, ..., n , То есть вы группируете наибольшее число с самым низким доступным числом.
Доказательство
Продолжайте по индукции, для случая 2n = 2 это очевидно.
Без ограничения общности учтите, что входные данные представляют собой список отсортированных чисел (поскольку, если это не так, сортируйте их)
x 0 x 1 x 2 ... x 2n .
Рассмотрим спаривание x 2n с любым числом, тогда ясно, что минимальная сумма этого спаривания достигается с помощью (x 2n , x 0 ).
Теперь рассмотрим сопряжение x 2n-1 , либо (x 2n , x 0 ), (x 2n-1 , x 1 ) - это пары, которые образуют минимальную максимальную сумму, или (x 2n , x 1 ), (x 2n-1 , x 0 ) есть, или оба есть. В последнем случае наш выбор не имеет значения. В секундах до последнего случая это невозможно (подумайте об этом). В общем случае, если мы будем индуктивно следовать этому процессу, когда мы ищем пару для x 2n-k , x k - самое низкое неиспользуемое значение, с которым мы можем соединиться; Предположим, вместо этого мы объединяем x k с некоторыми другими x 2n-j для j 2n-j + x k > = x 2n-k + x k , поэтому в большинстве случаев мы можно достичь только той же минимальной суммы.
Это означает, что выбор (x 2n-k , x k ) дает нам минимальные пары.