Задача Задача №2054307
А
А
Привет! Давай разберёмся, какую задачку нужно решить.
Мы видим задачу "Автобусная экскурсия". Давай выделим, что нам дано и что требуется сделать:
Задача:
Вводные данные:
- Число N — количество туристов.
- Число M — количество автобусов.
- Число Aᵢ — вместимость каждого автобуса.
Цель:
- Определить минимальное количество автобусов, необходимых для перевозки всех туристов.
Поиск решения:
- Нужно найти такую комбинацию автобусов, которая могла бы вместить всех туристов при минимальном числе используемых автобусов.
Решение на C++:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int N, M;
std::cin >> N >> M;
std::vector<int> capacities(M);
for (int i = 0; i < M; ++i) {
std::cin >> capacities[i];
}
// Сортируем вместимости автобусов по убыванию
std::sort(capacities.rbegin(), capacities.rend());
int totalTourists = N;
int busCount = 0;
for (int i = 0; i < M && totalTourists > 0; ++i) {
totalTourists -= capacities[i];
busCount++;
}
if (totalTourists > 0) {
// Если не хватает вместимости всех автобусов
std::cout << "Невозможно всех перевезти\n";
} else {
std::cout << busCount << std::endl;
}
return 0;
}
Описание:
- Считаем числа туристов
Nи автобусовM. - Считаем массив вместимости автобусов.
- Сортируем вместимости по убыванию, чтобы использовать сначала самые вместительные.
- Перебираем автобусы, отнимая от общего количества туристов их вместимости, считая, сколько автобусов было использовано.
- Если всех туристов перевезти невозможно, выводим сообщение об ошибке.
Это довольно простой алгоритм жадного типа. Если у тебя будут еще какие-то вопросы, не стесняйся спрашивать!