Блог пользователя savinov

Автор savinov, 11 лет назад, По-русски

Наверное, многие встречались с задачей:

Даны n(n - 1) / 2 попарных сумм чисел множества из n элементов, найти элементы этого множества или определить, что решения не существует. Но неизвестно к каким парам элементов относятся соответствующие суммы. У этой задачи есть стандартное решение: упорядочим исходные числа и переберем первое(т.е минимальное) число, затем раз за разом будем определять очередное число. Есть ощущение, что возможно(или невозможно :) ) делать это с помощью потока, прав ли я? а если нет, то почему?

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

Если n>=3, a_ij=x_i+x_j то x_i=(a_ij+a_ik-a_kj)/2, где i!=j!=k.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Думаю, здесь имеется в виду вариант, когда дано множество попарных сумм без соответствия.

»
11 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

Понятно, что минимальный элемент входит в две самые наименьшие суммы(a_ik и a_ij), переберем тогда a_kj и определим x_i. Более того, раз a_ik и a_ij — две наименьшие суммы, то перебрать a_kj нужно только среди первых n сумм. Ну а дальше все как описано в статье. Получается решение за чистый куб. Зачем здесь поток? Лучшей асимптотики вы не добьетесь.