Opportunity Cost — G (самая легкая)

Правка ru1, от akhan42, 2021-10-08 19:07:11

Научимся считать за константу opportunity cost для каждого tuple (x, y, z). Opportunity cost для (x, y, z) равен max по i=1...n величины max(x[i] - x, 0) + max(y[i] - y, 0) + max(z[i] - z, 0). Покажем что не нужно пробегать все i, а только следующий индексы: Пусть индексы m1, m2, m3, m4, m5, m6, m7 такие что m1 максимизирует x[m] m2 максимизирует y[m] m3 максимизирует z[m] m4 максимизирует x[m] + y[m] m5 максимизирует y[m] + z[m] m6 максимизирует x[m] + z[m] m7 максимизирует x[m] + y[m] + z[m]. То есть например, y[m5] + z[m5] максимален среди y[i] + z[i] для любых i.

Докажем что максимум opportunity cost для произвольного (x, y, z) достигается на одном из m1, m2, m3, m4, m5, m6, m7. Пусть он достигся на i вот собственно он OC[i] = max(x[i] - x, 0) + max(y[i] - y, 0) + max(z[i] - z, 0), к примеру, пусть первый максимум при этом был нулем, второй и третий не нулевыми (остальные случаи аналогичны). Тогда OC[i] = 0 + (y[i] - y) + (z[i] - z) = y[i] + z[i] - y - z <= y[m5] + z[m5] - y - z = 0 + (y[m5] - y) + (z[m5] - z) <= max(x[m5] - x, 0) + max(y[m5] - y, 0) + max(z[m5] - z, 0) = OC[m5]. Последнее неравенство в силу a <= max(a, b) и b <= max(a, b). То есть получили что на m5 opportunity cost не меньше, а значит и максимизирующий i это m5.

То есть для каждого (x, y, z) если считаем за константу opporunity cost. Осталось посчитать для всех и найти наименьший.

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru2 Русский akhan42 2021-10-08 19:12:39 26
ru1 Русский akhan42 2021-10-08 19:07:11 1497 Первая редакция (опубликовано)