Максимальное количество манго, которое можно купить

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

Имея два целых числа W и C , представляющих количество арбузов и монет, задача состоит в том, чтобы найти максимальное количество манго, которое можно купить, учитывая, что каждое манго стоит 1 арбуз, а X монет и y монет можно заработать, продав арбуз.

Примеры:

Input: W = 10, C = 10, X = 1, Y = 1
Output: 10
Explanation: The most optimal way is to use 10 watermelons and 10 coins to buy 10 mangoes. Hence, the maximum number of mangoes that can be bought is 10.

Input: W = 4, C = 8, X = 4, Y = 4
Output: 3
Explanation: The most optimal way is to sell one watermelon. Then, the number of coins increases by 4. Therefore, the total number of coins becomes 12. Therefore, 3 watermelons and 12 coins can be used to buy 3 mangoes. Hence, the maximum number of mangoes that can be bought is 3.

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

  • Инициализируйте переменную как 0 , чтобы сохранить требуемый результат.
  • Инициализируйте две переменные l как 0 , r как W для хранения граничных областей пространства поиска для бинарного поиска.
  • Зациклить, пока l≤r , и выполнить следующие шаги:
    • Сохраните среднее значение в переменной mid как (l+r)/2 .
    • Проверьте, можно ли купить среднее количество манго, используя заданные значения W , C , x и y .
    • Если это правда, то обновите an до mid и выполните поиск в правой части mid , обновив l до mid+1 . В противном случае обновите значение r до mid-1 .
  • Выведите значение ans в качестве результата.

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

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