Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2054307
А
Аноним
31 октября 2024 07:17 · публичный вопрос
А
Аноним

Реши на языке с++

Ответ нейросети
31 октября 2024 07:17

Привет! Давай разберёмся, какую задачку нужно решить.

Мы видим задачу "Автобусная экскурсия". Давай выделим, что нам дано и что требуется сделать:

Задача:

  1. Вводные данные:

    • Число N — количество туристов.
    • Число M — количество автобусов.
    • Число Aᵢ — вместимость каждого автобуса.
  2. Цель:

    • Определить минимальное количество автобусов, необходимых для перевозки всех туристов.
  3. Поиск решения:

    • Нужно найти такую комбинацию автобусов, которая могла бы вместить всех туристов при минимальном числе используемых автобусов.

Решение на 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;
}

Описание:

  1. Считаем числа туристов N и автобусов M.
  2. Считаем массив вместимости автобусов.
  3. Сортируем вместимости по убыванию, чтобы использовать сначала самые вместительные.
  4. Перебираем автобусы, отнимая от общего количества туристов их вместимости, считая, сколько автобусов было использовано.
  5. Если всех туристов перевезти невозможно, выводим сообщение об ошибке.

Это довольно простой алгоритм жадного типа. Если у тебя будут еще какие-то вопросы, не стесняйся спрашивать!