Максимально увеличьте количество ящиков, необходимых для хранения хотя бы одной черной и одной белой рубашки.

Опубликовано: 22 Сентября, 2022

Даны три числа W , B и O , представляющие количество рубашек белого, черного и других цветов соответственно, задача состоит в том, чтобы найти максимальное количество требуемых коробок, чтобы каждая коробка содержала три рубашки, состоящие как минимум из одной белой и одной черной рубашки, используя заданное количество рубашек.

Примеры:

Input: W = 3, B = 3, O = 1
Output: 2
Explanation:
Below are the distribution of shirts in the boxes:
Box 1: 1 white shirt, 1 black shirt and 1 shirt of other color.
Box 2: 2 white shirts and 1 black shirt.
Box 3: 1 black shirt
Since, only 2 boxes satisfy the given condition which is the maximum possible number of boxes with the given quantity of shirts. Therefore, print 2.

Input: W = 4, B = 6, O = 0
Output: 3

Подход: Данную проблему можно решить с помощью бинарного поиска. Идея состоит в том, чтобы найти максимальное количество ящиков в пространстве поиска, образованном нижней и верхней границей. Можно заметить, что нижняя граница и верхняя граница количества ящиков равны 0 и минимуму W и B соответственно. Выполните следующие шаги, чтобы решить проблему:

  • Инициализируйте переменную, скажем , как 0 , чтобы сохранить требуемый результат.
  • Инициализируйте две переменные, скажем, low как 0 и high как минимум (W, B).
  • Цикл, пока значение low не станет меньше high , и выполните следующие шаги:
    • Найдите среднее значение low и high в переменной, скажем, mid .
    • Проверьте, может ли максимальное количество полей равняться mid , затем обновите значение ans до mid и обновите пространство поиска в правой половине, обновив значение low .
    • В противном случае обновите пространство поиска до левой половины, обновив значение high .
  • Выведите значение ans в качестве результата.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O (log (мин (W, B)))
Вспомогательное пространство: O(1)