Задача: Ксерокопии
Вам нужно найти минимальное время, необходимое для создания копий документа, используя два ксерокса, один из которых копирует лист за секунд, а другой — за секунд.
Решение с использованием бинарного поиска
Ваш код почти правильный, но есть несколько моментов, которые можно улучшить. Давайте исправим ваш код:
Убедимся, что начальное значение и установлены правильно.
Убедимся, что проверка количества копий корректна.
Исправленный код:
#include
#include
int main() {
using namespace std;
int N, x, y;
cin >> N >> x >> y;
// Если N == 1, то минимальное время - это минимальное время одного из ксероксов
if (N == 1) {
cout << min(x, y);
return 0;
}
// Инициализация границ бинарного поиска
int L = min(x, y);
int R = max(x, y) * N;
int M, k;
while (L < R) {
M = (L + R) / 2;
// Проверяем, сколько копий можно сделать за M секунд
if ((M / x + M / y) >= N - 1) {
R = M;
} else {
L = M + 1;
}
}
cout << L + min(x, y); // Добавляем время для первой копии
return 0;
}
Пояснения:
Инициализация границ: Начальное значение установлено в минимальное время одного из ксероксов, а — в максимальное время, умноженное на .
Проверка количества копий: В условии if ((M / x + M / y) >= N - 1) мы проверяем, можно ли сделать копий за секунд, так как первая копия делается за минимальное время одного из ксероксов.
Вывод результата: В конце мы добавляем минимальное время одного из ксероксов к , чтобы учесть время для первой копии.
Этот код должен корректно работать для всех входных данных и использовать бинарный поиск для нахождения минимального времени.
вот код:
#include <iostream>
#include <algorithm>
int main() {
int N, x, y;
using namespace std;
cin >> N >> x >> y;
int L =max(x, y), R = max(L, min(x, y) * N), M, k;
while (L < R) {
M = (L + R) / 2;
if ((M / x + M / y) >= N) {
R = M;
}
else {
L = M + 1;
}
}
if (x == 1 && y == 1 && N > 1) {
cout << L + 1;
return 0;
} //костыль
cout << L;
return 0;
}
подскажите что не так, буду очень сильно благодарен. Вот задача: https://acmp.ru/index.asp?main=task&id_task=267
если ссылка будет битой название задачи: ксерокопии